03-Java语法基础

引言

本章节主要来讨论关于Java的基础语法,这部分语法在几乎所有编程语言中都一样,同时它也是一门编程语言基础中的础。
只要你写代码基本都会用的上。

变量
运算法

内存:
java虚拟机 默认分配的物理内存容量是计算机的1/8
计算机存储单位:
bit byte kb mb gb tb pb eb zb yb bb nb db cb xb

一. 变量

1.1 什么是变量

变量,可变化的量,可变化的数据,在计算机中,指的是一块数据空间,允许程序执行期间可以随时修改它的数据值。 简单的说就是用来存数据的容器。

image.png

直接量 (字面量) 固定不变得,就是常量。 1

1.2 变量三要素

变量的三要素 数据类型 变量名 变量值,一个变量就是由这三个方面组成的。

  • 类型: 决定了变量的格式和范围。
  • 变量名:该变量对外访问的代号。
  • 值:变量具体的数据值。

类型 变量名 值

1.2.1 变量的类型要求

java语言是一门强类型( 所谓强类型就是对类型敏感,必须明确说明 )所以每个变量在声明前必要想清楚它将要保存什么样的数据,不同的数据需要不同类型的变量来存储。
Java 语言中对于类型的划分整体 分为基本数据类型 和 引用数据类型

  • 基本数据类型 8个

    byte short int long float double char boolean

  • 引用数据类型 无数个

** String List Object 数组 自定义类 接口 **…

1.2.2 变量的名字要求

事实上,每个变量在内存中都有一个地址,叫内存地址,但是这个地址不好记,通过为这个变量命名的方式,来简化我们对变量空间的访问,命名遵循标识符规则。

1.2.3 变量值的要求

变量值,变量存储的具体数据,java语言强类型,要求变量的值必须和类型一致或兼容。

1.3 变量声明定义

语法1 :数据类型 变量名 = 值 ;

public static void main(String[] args){
     int  num = 100;
}

声明变量且为变量赋值

image.png

image.png

注意事项:
1、在一个方法块里面,不能重复定义相同类型和相同名称的变量;
2、定义在方法块内的变量,我们称为局部变量,局部变量必须先定义赋值,才能使用;
3、定义在类的作用域范围,方法块外的变量 我们称为:全局变量(成员变量);
4、全局变量和局局变量,定义变量类型和名称可以相同;
5、如果有相同的全局变量和局部变量,那么局部变量的优先级要高于全局变量;
6、全局变量,默认初始化的时候是有值的,而局部是没有的;
7、全局变量作用是在整个class范围内,局部变量只能在当前方法块中使用;

语法 2: 数据类型 变量名;

public static void main(String[] args){
      int m;
      int k;
      int x;
    
}

只是声明变量没有赋值 , 可以后续赋值。

语法3 声明多个变量

public static void main(String[] args){
      int m,k,x;
}

一次性声明多个变量,使用 逗号 , 分隔。

语法4 声明多个变量 且赋值

public static void main(String[] args){
      int m =4 , k = 5 , x;
}

多个变量声明中间使用 逗号 , 分隔,根据需求为部分变量 或者全部变量赋值

定义在方法内部的变量使用前需要初始化值。

1.4 变量的作用范围

  • 全局变量

定义在方法外部,可以在整个类中使用,即便不赋值,系统也将为其初始化默认值。

  • 局部变量

局部变量只能其所在范围内使用。 局部变量使用前必须先赋值。

相同作用域下变量 变量名不允许重复。不同作用域下,变量名可以重复,且使用时遵循就近原则。

二.数据类型

2.1 数据类型介绍

不同数据类型由于占用空不同,直接导致保存数据范围大小不同,实际使用的时候可以选择合理的类型,可有效利用内存。

byte( 1字节=8bit位 ) short(2字节) int(4字节) long(8字节) ** ** float(4) double(8) boolean( 1 ) char( 2 )

image.png

char 取值范围 0-2^16

2.2 二进制

进制:常见的 10进制 2进制 8进制 16进制 ,进制往往就是说逢多少需要进位。不同的进制数码(符号)不同,比如10进制( 0 1 2 3 4 5 6 7 8 9 ) 比如2进制( 0 1 ) 比如16进制( 0 1 2 3 4 5 6 7 8 9 A B C D E F ) 比如 8 进制 ( 0 1 2 3 4 5 6 7 )

二进制,是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于1679年发明。二进制数据是用0和1两个数码来表示的数。
在二进制中 一个0 或1表示一个bit(比特),8个bit 等于 一个byte(字节) 1 byte(字节)= 8bit

01010101

其中 最高位为符号位,0表示正数 1表示负数

【反码】表示法规定: 正数的反码与原码相同,负数的反码是对其原码逐位取反,但不包含符号位。
-5源码

10000101

-5反码

11111010

【补码】表示法规定: 正数的补码与原码相同,负数的补码是对其反码+1。
-5补码

11111011

计算中是使用补码来表示和存储数据的

2.3 整型

public static void main(String[] args){
    byte a = 123;
    short b = 300;
    int c = 123345;
    long pi = 600000000L;
}

2.4 浮点型

public static void main(String[] args){
    float x = 123.4f;
    double pi = 3.14d;
}

2.5 布尔

public static void main(String[] args){
    // 标准赋值
    boolean isVIP = false;
}

2.6 字符型

ascii码赋值
// unicode编码

public static void main(String[] args){
    // 标准赋值
    char sex = '';
    // ascii码赋值	
    char sex= 10;
    // unicode编码
    char sex = '\u7537'
}

用于保存单个字符

\u unicode \n 换行 \t 制表符 ’ 单引号 " 双引号 \ 斜杠 */

2.7 类型转换

类型转换是变量赋值的一种特殊情况,详细来看分为两种。

  • 自动类型提升

当把一个 变量或者值赋值给一个比自身范围更大精度更高的变量时,是可以的,同时该变量或值的类型会被提升。
举例

public static void main(String[] args){
   
     byte m  =  12;
     int  x = m;
    
     double money = 12;
}
  • 强制类型转换

相反,如果把一个范围更大精度更高的变量或值 赋值给一个跟小更低的变量,则编译器是拒绝的,如果非得要这么干,那么就需要强制。这样可能会找出数据精度的丢失。

public static void main(String[] args){
     double money = 12;
     int m = (int)money;
}

数值 类型精度排序 byte < short < int < long < float < double

java 里面默认的类型就是一个int

三、键盘输入

目前咱们的数据都是直接给定的数据,这样不是灵活,如果我们需要动态的获取用户的输入呢?

3.1 导入包

import java.util.Scanner;
import java.util.*;

需要写在源文件的第一行顶部( 类的外部 )

3.2 使用输入对象

Scanner sc = new Scanner(System.in);

3.3 使用输入方法

// 输入一个整数数据
int num =  sc.nextInt();

//输入一个 字符串数据
String name = sc.next();

//输入一个double 数据
double money = sc.nextDouble();

3.4 整合代码

package xx.xx;
import java.util.Scanner;
public class IpuptDemo{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个整数");
        int m =   sc.nextInt();
        System.out.println("你输入的是"+ m);
    }
}

四.运算符

用于变量或者数据的运算,运算的类型非常多,需要分类来讨论。

3.1赋值运算符

赋值
=

一个非常基础却十分常用的运算符,它的作用就是把 等号 右边的数据 赋值给 左边的变量。

public static void main(String[] args){
   int m = 10;
   int k = 20;
}

需要注意的是 赋值数据 必须要 和类型一致。

3.2算术运算符

加法减法乘法除法模运算
+-*/%

用于算术数学运算,遵循混合运算法则,%的作用是求余数。 乘号使用 * 。

public static void main(String[] args){
   int m = 10;
   int k = 20;
   System.out.println( m+k );
   System.out.println( m*k );
   System.out.println( m/k );
   System.out.println( m-k );
   System.out.println( m%k );
}

除号 /

3.3复合赋值(复合运算符)

加等减等乘等除等模等
+=-=*=/=%=

用于简化运算和赋值,如果一个变量需要在自己身上做算术运算,可以使用。

public static void main(String[] args){
   int m = 10;
   int k = 20;
   int n = 105;
   System.out.println( m+=10 );
   System.out.println( m-=20 );
   System.out.println( k*=2 );
   System.out.println( m/=5 );
   System.out.println( m%=5 );
}

3.4 自增自减运算符

在自己基础上 +1 或者 -1的 运算符号。
++ 和 –
++ : 自增
– : 自减


class PlusDemo{
	
	public static void main(String[] args){
 
            int age = 30;
			
			//age++;
			//++ age;
			
		
            age--;		
			--age;
		
			
			//无论 ++ -- 在前或者在后,对于变量本身的影响是确定 +1 或者 -1.
			System.out.println(age);// ok
			
			
			System.out.println("-------------------------------------");
			int money = 100;
			 System.out.println(money--); //   问的表达式
		 
			// 对于++ -- 表达式来讲,++ --的位置是有影响的, 在前具有立即计算性 在后有延时计算性。
			
 
    }
	
}

3.4关系运算符

大于小于大于等于小于等于相等不等
><>=<===!=

用于对数据做大小关系的比较,运算结果是 布尔值

public static void main(String[] args){
   int m = 10;
   int k = 20;
   System.out.println( m>k );
   System.out.println( m<k );
   System.out.println( m>=k );
   System.out.println( m<=k );
   System.out.println( m==k );
   System.out.println( m!=k );
}

3.5逻辑运算

且[不短路]或[不短路]
&&||&|

用于多条件逻辑判断,运算结果是 布尔值。

public static void main(String[] args){
   int m = 10;
   int k = 20;
   System.out.println( m>0 && k>0 );
}

3.6三目运算符

三目
?:

可用于逻辑判断,根据判断结果为变量赋值。 表达式?a:b

public static void main(String[] args){
   int m = 10;
   int k = 20;
   int t = 1>0?m:k;
}

3.7位运算符

按位与按位或按位异或按位取反左移右移无符号右移
&|^~<<>>>>>
同1则1有1则1不同为1相同为00、1互换向左移动向右移动向右移动不保留负数符号
随便怎么搞:正数

用于把数据按照二进制位进行运算,运算结果为整数。

public static void main(String[] args){
   int m = 10;
   int k = 20;
   System.out.println( m&k ); 
}

image.png

附:ASCII码表

![Picture 2.png](https://img-blog.csdnimg.cn/img_convert/fa7deee71c85fc29e91c17332680625e.png#height=513&id=nwJIm&margin=%5Bobject%20Object%5D&name=Picture 2.png&originHeight=699&originWidth=1232&originalType=binary&ratio=1&size=597570&status=done&style=none&width=904)

附:关键字表

image.png

附:优先级结合性表

image.png

作业


1.变量练习

使用变量定义 定义一部电影资讯信息,数据从键盘输入。
比如: 
影片名字:《你好!李焕英》
上映日期: 2021-1-22
导演:     贾玲
票价:      30.502.强制类型转换练习
输入一个 double 值, 把double 强制为int 然后 +1 输出。

3.输入3int 值 计算 3个数的和输出。

4.计算BMI指数:
BMI = 體重(公斤) / 身高2(公尺2)
输入 体重 和 身高 按照公式计算 BMI,注意 java 中不可以直接使用 平方,比如 a的平方可以使用 a * a表示。
并提示所属类别 比如偏瘦  正常  过重 肥胖   (不允许用if)
分类	BMI 范围
偏瘦	<= 18.4
正常	18.5 ~ 23.9
=>	过重	24.0 ~ 27.9
肥胖	>= 28.0

5. 输入一个三位数判断这个数是否为水仙花数  水仙花数 abc = a的立方 + b的立方 + c的立方 (不允许用if

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值