目 录
2.1.1 基本数据类型: Primary type (原生数据类型)
3.1 算数运算符: + ,- ,* ,/(取商),%(取余数),++ ,--
3.2 比较运算符:结果一定是boolean类型 > ,< ,>= ,<= ,!= ,==
4.4 十六进制: 0-9 / A~F 满16进1, 以 0x / 0X 开头 (A~F不区分大小写)
一、 关键字、标识符、变量
1.1 关键字
在java中已经被赋予了特殊含义
public,class,static,void 都是关键字,关键字都是小写的
1.2 标识符
Java中,凡是自命名就是标识符;
命名规范:
1.由英文字母 A-Z 或 a-z 或 数字0-9 或 _ 或 $ 组成
2.不能以数字开头,但可以包含数字
_Test1 , T_1est , Tes1t, 正确
1Test 错误
3.不能是关键字,但可以包含关键字
Tclass
4.严格区分大小写
5.不能有空格,在一个作用域内不能重名
6.尽量驼峰式命名
大驼峰 / 小驼峰
尽量见名知意
1.3 变量
程序 = 数据结构 + 算法 + 编程语言
变量:用来存储单个数值的空间,在内存中体现
age = 12;
为什么要有变量? 用来存储最小的数据
Java是不允许变量单独出现的,变量必须由数据类型来修修饰:
数据类型 age = 23;
二、数据类型
2.1 Java中的数据类型有哪些?
2.1.1 基本数据类型: Primary type (原生数据类型)
8大基本数据类型:
数值型:
整型:默认类型是 int 型
字节数(Byte) | 位(bit) | 区间 | |
byte | 1 | 8 | -128 ~ 127 |
short | 2 | 16 | -2^15 ~ 2^15 - 1 |
int | 4 | 32 | -2^31 ~ 2^31 - 1 |
long | 8 | 64 | -2^63 ~ 2^63 - 1 |
浮点型:默认类型是 double 型
字节数(Byte) | 位(bit) | |
float | 4 | 32 |
double | 8 | 64 |
布尔型: boolean 1字节 true ( 默认值 false )
字符型: char 2字节 char ( 单个字符,单引号修饰 )
Java中的字符编码是按着 ASCII 码,在ASCII字符编码表中都有对应的数字
2.1.2 引用数据类型: References type
String 类,接口,枚举,数组,注解
String 类型: 字符串 ( 双引号修饰 )
String name = "张三";
public class Day02{
public static void main(String[] args){
byte a = 127;
System.out.println(a);
short b = 21;
System.out.println(b);
int age = 23;
System.out.println(age);
long c = 3423423423423423423L;
long cc = 34;
System.out.println(c);
float f = 22.68f;
double d = 3.14;
System.out.println(f);
System.out.println(d);
boolean flag = true;
System.out.println(flag);
char letter = 'A';
System.out.println(letter);
String name = "用户名";
System.out.println("姓名:"+name);
}
}
2.2 数据类型的作用?
修饰一个变量;变量是用来存储单个数据的;这个过程就是变量的初始化操作。
int a = 67;
//声明一个变量
int age;
2.3 数据类型的转换
byte a = 3;
short s = a;
把 byte 类型的 a 转换为 short 类型来存储,这个过程就是数据类型的转换。
2.3.1 隐式转换(自然转换): 从小到大类型的转换
例如: byte -->short -- >int --- >long
2.3.2 显示转换:强制转换 : 从大到小的转换
short a = 129;
byte b = a;
字符类型 和 数值型:
char c= '男';
char b = 132;
浮点型和整型尽量不要做数据类型转换的操作,会出现精度损失问题
int a = 3.14f;
三、运算符
一元,二元(符号左右两边有两个数据) ,三元
3.1 算数运算符: + ,- ,* ,/(取商),%(取余数),++ ,--
int a = 3;
int b = 5;
System.out.println(a+b);
一元运算符:
++在前 先运算 在赋值
++在后 先赋值 在运算
符号操作的是一个变量
3.2 比较运算符:结果一定是boolean类型 > ,< ,>= ,<= ,!= ,==
public class Day02{
public static void main(String[] args){
boolean result = 3 > 5 ;
System.out.println(result);
}
}
3.3 赋值运算符: =
int a = 33; 数据向左赋值
拓展赋值运算符: += ,-= ,*= ,/= ,%=
int a = 1;
int b = 2;
int c = a+b;
简写: a = a+b;
简写: a+=b;
3.4 逻辑运算符: 用来判断两个布尔类型的结果
& 单与
true & true 结果 true
true & false 结果 false
false & true 结果 false
false & false 结果 false
&& 短路与
true && true 结果 true
true && false 结果 false
false && true 结果 false
false && false 结果 false
性能要比单与要好,如果左边的表达式的结果为false时,右边的表达式不参与判断,直接返回结果
| 或 or 有一个为true 就是true
true | true true
true | false true
false | true true
false | false false
|| 短路或 如果有一个为true 就直接返回true
true || true true
true || false true
false || true true 左边是false 右边参与判断
false || false false
^ 异或 相同假,不同为真
true ^ true false
true ^ false true
false ^ true true
false ^ false false
!取反
!true false
!false true
!(1==1)
!(3 > 7)
3.5 位运算符
位运算规则:
Java数值运算过程中都是将10进制转换位二进制然后在进行计算,在计算机运算时,都会将源码转换位补码进行运算,在把二进制数据转换位十进制展现给用户;如果二进制的符号位是0表示正数,1表示负数。
正数的原码,反码,和补码都是一样的
负数的反码: 符号位保持不变 ,其他位取反
负数补码: 负数的反码 + 1
0的反码 和补码 都是 0
位运算 & :都为1时为1,否则为0
7 & 5
0000 0111
0000 0101
-----------------
0000 0101
位运算 | :都为0时为0,否则为1
7 | 5
0000 0111
0000 0101
-----------------
0000 0111
位运算 ^ :相同为0,不同为1
6 ^ 3 = 5
0000 0110
0000 0011
-----------------
0000 0101
3.6 三目运算符
布尔类型表达式 ? 结果1 : 结果2;
public class Day02{
public static void main(String[] args){
boolean flag1 = 1 > 1 && 2 > 3 ? true : false ;
int flag2 = 1 > 1 ? 1 : 2 ;
float flag3 = 1 > 1 && 2 > 3 ? 0.1f : 0.2f ;
char flag4 = 1 > 1 && 2 > 3 ? 'm' : 'f' ;
System.out.println(flag1);
System.out.println(flag2);
System.out.println(flag3);
System.out.println(flag4);
}
}
当布尔类型表达式结果为true输出结果1,为false输出结果2 (9种:8个数据类型+一个String类型)
四、进制
4.1 二进制
0000 0111 转换为10进制
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
0000 1001 转换为10进制
0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
对应相乘相加即可
4.2 八进制: 0-7 以0开头,满8进1
4.3 十进制: 0-9 满10进1
十进制转二进制: 除以2 ,取余数
7 二进制:1个字节 8位
0000 0111
9 二进制:
0000 1001
4.4 十六进制: 0-9 / A~F 满16进1, 以 0x / 0X 开头 (A~F不区分大小写)
五、符号位
0000 0000 0000 0000 0000 0000 0000 0000
Java整数常量默认是 int 类型,用二进制定义整数时,第32位是符号位;是 long 类型时,第64位是符号位。符号位是0表示正数,1表示负数。
原码:数值的二进制表达
反码:对原码按位取反,最高位(符号位)不变
补码:正数的补码等于本身,负数的补码等于反码+1
数字在计算机底层以二进制的形式存在;计算机以补码的形式保存所有整数。
反码
~6 = -7
0000 0110
1000 1001
六、左右移
6.1 左移 <<
-1 << 2 -1向左移动2位
1000 0000 0000 0000 0000 0000 0000 0001
溢出砍断
1000 0000 0000 0000 0000 0000 0000 000100 低位补0
符号位不变
1000 0000 0000 0000 0000 0000 0000 0100
6.2 右移 >>
8 >> 2
0000 0000 0000 0000 0000 0000 0000 1000
溢出砍断
00 0000 0000 0000 0000 0000 0000 001000 高位补0
0000 0000 0000 0000 0000 0000 0000 0010
6.3 无符号右移 >>> (忽略正负)
被移位的二进制最高位无论是0还是1,空位都用0补。如:-1 >>> 1 = 2147483647
十进制 -1 -> 二进制 1000 0000 0000 0000 0000 0000 0000 0001
二进制补码 1111 1111 1111 1111 1111 1111 1111 1111
溢出砍断
111 1111 1111 1111 1111 1111 1111 11111
0111 1111 1111 1111 1111 1111 1111 1111