一、变量

变量是一个可以变化的量,我们在取内存的数据需要知道其地址,但是地址常为32位机器代码难记忆,需要明确的名称去代表。

命名规则

java变量以__开头 java变量数字开头_字符串

java中的命名规范

类名:首字母大写,驼峰命名
变量:首字母小写,驼峰命名
包名:全小写,域名倒置+包名

java变量以__开头 java变量数字开头_System_02

二、数据类型

java变量以__开头 java变量数字开头_字符串_03


java是一个强类型语言,在定义变量完成后,该变量只能存储对应数据类型的数据,其他的数据类型是无法存储的。

数值型

java变量以__开头 java变量数字开头_字符串_04

int num = 10; // 定义一个整型变量
System.out.println(num);
long num = 10L; // 定义一个长整型变量, 初始值写作 10l 也可以(小写的 L, 不是数字1). 
System.out.println(num);
short value = 0; 
System.out.println(value);

浮点型

java变量以__开头 java变量数字开头_System_05

double num = 1.0;
System.out.println(num)
float num = 1.0f;    // 写作 1.0F 也可以
System.out.println(num);
System.out.printf("%.nlf",num);\\n表示想要输出小数点后几位

注意

Java 中的 double 占 8 个字节;float 占四个字节
当整型相除得到的是整型,如果需要得到小数点需要double类型运算
浮点数的存储与整型存储不同,java浮点数的存储参考C语言(遵守IEEE754标准)
例如 double num = 1.1;
System.ou.println(num * num);
// 结果为1.2100000000000002
因为 double 可以精确表示11位,而之后的数都不是精确值,总结就是,小数没有精确值

字符型

java变量以__开头 java变量数字开头_字符串_06

定义:
char ch1 = 'A';
char ch2 = '呵'; 
System.out.println(ch);
注意:
char ch1 = 97;
char ch2 = -7;
System.out.println(ch1);	// 结果为 A
System.out.println(ch2);	// 报错
因此 char 类型的范围在 0 ~ 2的16次方

在 C 语言中 char 是一个字节,而在 Java 中 char 是两个字节,其表示的字符种类也更多,如有中文
在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符

布尔型

java变量以__开头 java变量数字开头_类型转换_07

代码示例
boolean value = true;
System.out.println(value);

1)boolean 类型的变量只有两种取值,true 表示真,false 表示假 Java 的 boolean 类型和 int
2)不能相互转换,不存在 非0 表示 true, 0 表示 false 这样的用法
3) JVM 规则下,没有明确 boolean类型的大小,有些书里表明是占1个字节, 有些表明是占1个比特位

补充: 字符串类型变量

String 变量名 = “初始值”;

定义
String name = "Hezx";
System.out.println(name);

String 的类型其实与上面的内置类型不一样,它其实是引用类型。因为它所定义的变量叫做引用变量。按照示例代码,引用变量 name 里面存放的不是字符串"Hezx" ,而是将字符串所占的那片空间的地址存放在 name 里面

拼接用法

字符串“+”任意类型的数据结果是字符串

int a = 10;
int b = 20;
System.out.println("ab = " + a + b);//这个结果为 `ab = 1020` 
对比:
int a = 10;
int b = 20;
System.out.println(a + b + "= ab");//结果为 30 = ab

三、转义字符

java变量以__开头 java变量数字开头_System_08

四、类型转换和整形提升

类型转换

java变量以__开头 java变量数字开头_System_09

隐性类型转换 :小范围类型赋值给大范围类型(不会报错)
显性类型转换 :大范围类型赋值给小范围类型(会报错)
报错那就强制:使用强制类型转化的方式可以将 double 类型强制转成 int,但是可能精度缺失
注:int 和 boolean互不相干,互不相干的类型之间无法强转

整形提升

  • int 和 long 混合运算
int a = 10; 
long b = 20; 
int c = a + b; // 编译出错, 提示将 long 转成 int 会丢失精度
long d = a + b; // 编译通过

当 int 和 long 混合运算的时候 , int 会提升成 long , 得到的结果是 long 类型 , 需要 long 类型接收
如果非要用 int 来接收结果 , 就需要使用强制类型转换

  • byte 和 byte 的运算
byte a = 10; 
byte b = 20; 
byte c = a + b; 
System.out.println(c); // 编译报错
正确操作:
byte c = (int)(a + b);

解释:计算时先将a和b都提升成int, 得到的结果也是int, 需要int型接收(或者强制类型转化)
因此,当小于4字节类型数据计算时需考虑整型提升

  • int 转换成 String
  • java变量以__开头 java变量数字开头_字符串_10

  • String 转换成 int
  • java变量以__开头 java变量数字开头_类型转换_11

五、常见运算符

a++和++a

java变量以__开头 java变量数字开头_字符串_12

比较运算

java变量以__开头 java变量数字开头_java变量以__开头_13


java变量以__开头 java变量数字开头_System_14

逻辑运算符

java变量以__开头 java变量数字开头_类型转换_15


java变量以__开头 java变量数字开头_类型转换_16

移位运算

移位运算符有三个: << >> >>>
左移 << : 最左侧位不要了 , 最右侧补 0
右移 >> : 最右侧位不要了 , 最左侧补符号位 ( 正数补 0, 负数补 1)
无符号右移 >>>: 最右侧位不要了 , 最左侧补 0