CoreJava Day2
一、变量
-
作用:计算机中的一块内存空间,是数据的基本存储单元
-
``
- 定义变量后必须为变量赋值,否则该变量将无法使用(没有默认值)
- 值的类型必须与变量的数据类型一致,否则赋值失败(Java强类型机制)
#### 2、数据类型
- 基本数据类型
| 数据类型 | 关键字 | 所占空间 | 数值范围 | 字面值 |
| :------: | :----------: | :------: | ------------------------------------------------- | --------------------------------- |
| 整数 | byte | 1b | -128~127 | 整数 |
| | short | 2b | -32768~32767 | 整数 |
| | int(默认) | 4b | -2147483648~2147483647 | 整数 |
| | long | 8b | -9223372036854775808~<br />9223372036854775807 | 整数l<br />整数L |
| 浮点型 | float | 4b | 1.4e-45~3.4e38<br />-3.4e-38~-1.4e45 | 小数f<br />小数F<br />科学计数法F |
| | double(默认) | 8b | 4.9e-324~1.7e308<br />-1.7e-308~-4.9e324 | 小数<br />小数D<br />科学计数法 |
| 布尔型 | boolean | 4b | true\|false | |
| 字符 | char | 2b | 整数:0~65535<br />unicode编码:'\u0000'~'\uFFFF' | 整数<br />unicode编码<br />' ' |
- 引用数据类型
```markdown
String 字符串 用来存储多个字符
字面值: " "
JDK 13 : 新增字面值 """ """ 文本域
-
转义字符:转换某个字符的含义
将有特殊意义的字符转换为普通字符 或 为普通字符赋予特殊意义 语法:\字符 常见的转义字符组合 1. \" :" 双引号 2. \' :' 单引号 3. \t :制表符(跳格) 4. \n :换行 5. \\ :斜杠
-
补充
1. float与double只能存储近似结果,运算时可能丢失运算精确度 2. Java中存储数据的内存空间以slot为单位,1个slot占用4b 3. 数字类型进制符号:0 8进制,0x 16进制, 0b 2进制(JDK7) 4. 数字类型支持分隔符 _ 下横线(JDK7) 5. JDK10后支持 var 类型变量(编译器自动推断数据类型)
二、变量的类型转换
1、自动类型转换
-
编译器自动将A类型的数据转换为B类型,无需人工干预
-
满足两个前提条件
1. 两种类型兼容 数字类型之间兼容 String与boolean不与其他类型兼容 2. 目标类型大于(可存储数值范围)源类型 byte b = 10; 目标 源 int a = b;
2、强制类型转换
-
当两种类型兼容,目标类型小于源类型时,屏蔽编译器可能损失精度的错误
-
语法:
目标类型 变量名 = (目标类型)源类型数据;
-
例:
int a = 10; //目标类型 变量名 = (目标类型)源类型数据; byte b = (byte)a;
-
整数长度合适数据完整
-
例:
int a = 10; byte b = (byte)a; System.out.println( b );// 10
-
整数长度不合适数据截取(舍前取后)
-
例:
int a = 128; byte b = (byte) a; System.out.pirntln( b );//-128
-
小数转换为整数(只保留整数)
-
例:
double d = 12.65; int a = (int)d; System.out.pirntln( a );// 12
三、表达式
-
概念:用运算符链接的变量或数据,最终可以得到一个结果
-
自动类型提升:当两种类型不同的变量运算时,运算结果的数据类型与其中较大的数据类型一致。
-
提升规则:
两个变量有一个为double 结果为 double 没有double出现float 结果为 float 没有float出现long 结果为 long 没有long出现int 结果为 int 其他类型运算时结果默认为int类型
四、运算符
1、算术运算符
-
用于数学运算 + - * / %
-
例:
int a = 10, b = 5; String str = "Hello"; a + 10 ----> 结果:20 a + b ----> 结果:15 a + str ----> 结果:"10Hello"(字符串拼接) str + b ----> 结果:"Hello5"(字符拼接) a - b ----> 结果:5 a * b ----> 结果:50 a / b ----> 结果:2 a % b ----> 结果:0 (除法竖式)
2、赋值运算符
-
用于存储或改变一个变量的值 = += -= *= /= %= ++ –
-
例:
int a = 10, b = 5; a = 20 ----> 将20赋值给变量a 表达式的结果为 20 a变量的值为:20 a +=b ----> 等同于 a = a + b 表达式结果为:15 a变量的值为:15 a -=b ----> 等同于 a = a - b 表达式结果为:5 a变量的值为:5 a *=b ----> 等同于 a = a * b 表达式结果为:50 a变量的值为:50 a /=b ----> 等同于 a = a / b 表达式结果为:2 a变量的值为:2 a %=b ----> 等同于 a = a % b 表达式结果为:0 a变量的值为:0 ++a ----> 等同于 a = a + 1 表达式结果为:11 a变量的值为:11 --a ----> 等同于 a = a - 1 表达式结果为:9 a变量的值为:9 a++ ----> 等效于 a = a + 1 表达式结果为:10 a变量的值为:11 a-- ----> 等效于 a = a - 1 表达式结果为:10 a变量的值为:9
4、逻辑运算符
-
!(取反),对boolean结果取相反的值
-
例:
int a = 10, b = 5, c = 2; !(a > b) ----> a > b为true 对其取反 结果为:false
5、三元运算符(三目运算符)
-
特点:可以根据一个条件的真假,返回不同的结果
-
语法:
布尔表达式? 结果1 : 结果2; 当布尔表达式结果为 true时,返回 结果1 当布尔表达式结果为 false时,返回结果2
-
例:
int a = 10,b = 5, c = 2; (a > b ? 10 : 20); -----> 结果:10 (a < b ? 10 : c+1 ); -----> 结果:3
-
补充
逻辑运算符 |、&非短路运算符,左右两侧表达式必须运行 ||、&&短路运算符,如果左侧表达式能够决定结果,右侧表达式不再执行 位运算符 &(与)、|(或)、~(非)、^(异或)、<<(向左位移)、>>(向右位移)、>>>(无符号右移)