变量
概念
变量相当于内存中的一个数据存储空间的表示
变量三要素:数据类型,变量名,值
变量使用的注意事项
- 变量表示内存中的一个存储区域,数据类型不同,占用的空间大小不同.
- 该区域有自己的名称和类型
- 先声明后使用
- 可以改变,同一个作用域不能同名
- 三要素
程序中+的使用
1.两边都是数值型,做加法运算
2.左右一边为字符串,做拼接运算
数据类型
8大基本数据类型
整数型,存放整数(byte[1],short[2],int[4],long[8])字节
浮点型(float[4],double[8])
布尔型(boolean[1],存放true false)
字符型(char[2]),存放单个字符
引用数据类型
类(class)
接口(interface)
数组([])
整型
细节:1.java整数类型在任何操作类型(OS)都是大小固定的,以保证java程序的可移植性.
2.java整型常量默认为int型,声明long型常量需后加'L' 或'l'
3.java程序中常声明为int型,除非不足以保存大数就用long
4.bit:计算机中的最小存储单位,1byte=8 bit;byte是基本存储单位
浮点型
单精度float,占用4个字节,范围-3.403E38~3.403E38
双精度double.占用8个字节,范围-1.798E308-1.798E308
说明:1.浮点数在机器中的存放形式,浮点数=符号位+指数位+尾数位
2.尾数部分可能丢失,造成精度损失.
细节:
- Java的浮点型常量默认为double型,需要加D/d也可以不加,声明float型常量,需后加'f'或"F"
- java整数类型在任何操作类型(OS)都是大小固定的,以保证java程序的可移植性.
- 浮点型常量有两种表示形式
十进制:5.12 512.0f .512
科学计数法型:5.12e2[5.12*10的2次方] 5.12E-2[5.12/10的二次方]
4.通常情况下使用double型
5.浮点数使用陷阱: 2.7 = 2.7和 8.1 / 3 = 2.6999999999999997
得出一个重要的使用点: 当我们对运算结果是小数的进行相等判断时要小心
字符类型
- 字符常量用''
- Java允许使用转义字符'\'来将其后的字符转变为特殊的字符型常量
- 在java中,char本质是一个整数,输出时是Unicode码对应的字符
- 可以直接给char符一个整数,他会输出对应的unicode字符
- char型可以进行运算,相当于一个整数
-
字符本质和字符编码
布尔类型
1.boolean,只允许取true false
2.boolean类型只占一个字节
3.用于逻辑判断,不可以用01代替(不同于c语言)
基本数据类型
自动类型转换
赋值或运算时精度小的类型可以自动转换为精度大的数据类型。
char->int->long->float->double(最大)
byte->short->int->long->float->double
注意和细节
0.把数赋给byte时,先判断该数是否在byte范围内,如果是就可以,如果是按变量赋值,判断类型
1.有多种类型数据混合运算时,系统首先自动将所有数据转成容量大的那种数据类型然后再进行运算
2.精度大赋值给精度小报错,反之则就会自动类型转换
3.(byte,short),char 之间不会进行自动转换,
4.byte,short,char 他们三者可以计算,在计算时首先转换为int类型,无论是单独出现还是混合出现
5.布尔类型不参与类型的自动转换
6.自动提升原则:表达式的结果自动提升为操作数中最大的类型
强制类型转换
自动类型转换的逆过程,将精度大的数据转换成精度小的数据类型.使用时加上强制转换符(),但可能造成精度降低或溢出.
细节
- 当进行数据的大小从 大->小使用强制类型转换
- 强制转换符只对最近的操作数有效
- char 类型可以保存int类型的常量但不能保存int型的变量,需要强转
- byte和short char类型进行运算时会当做int 类型处理
String 类型和基本类型转换
基本数据类型转String型
将基本数据类型的值加""即可
String类型转基本数据类型
通过包装类调用parseXX方法即可.
细节:
"123"可以转为123
但"hello"转不了整数
字符串转字符只取第一个字符
运算符
/ 除号%取余
自增自减
i++:i先赋值后自增i+=1;例如K=i++,i=0,k=0,后i=1,下一轮k=1,i=2...
++i;i先自增后赋值同上条件,k=1,i=1;下一轮i=2,k=2
int i=6;if(i++==7)//false
后++在比较完后运行
关系运算符
System.out.println(a<b);成立输出true,不成立输出false;结果只能是true or false
逻辑运算符
& 逻辑与运算
| 逻辑或运算
!a:取反运算
a^b:异或运算
&&短路与 ||短路或 判断结果和&|一样
短路与&&逻辑与&区别:
对于短路与&&来说,如果第一个条件判断为false,后面条件不会判断
对于逻辑与&来说,如果第一个条件判断为false,后面条件会继续判断
短路与或|和逻辑或|区别:
同理,短路或第一个条件为true,后面条件就不会在判断,结果为真。
逻辑或第一个条件无论为真假,后面条件还会在判断。
取反
!a,a为表达式,数等
逻辑异或^
a,b值相同为0,不同为1
赋值运算符
= +=,-=,/=,...
注意:复合赋值运算符会进行类型转换
byte b = 3;
b += 2;等价于b = (byte)(b + 2);
三元运算符
条件表达式?表达式1:表达式2;
运算规则:
1.如果条件表达式为true,运算后的结果为表达式1.
2如果条件表达式为false,运算后的结果为表达式2.[一眼丁真]
运算优先级
Java标识符命名的规则和规范
规则
- 由26个英文字母 0-9或$组成
- 不可以数字开头,如3ab
- 不能使用关键字和保留字但可包含了
- Java严格区分大小写,长度无限制
- 标识符不能包含空格
规范
1.包名:多单词组成时所有字母都小写:aaa.bbb.vvv
2.类名接口名:多单词组成时,首字母大写: XxxYyyZzz(大驼峰)
如: TankShotGame
3.变量名,方法名 : 多单词组成时,第一个首字母小写,第二个单词开始每个首字母大写: xxxYyyZzz(小驼峰,即驼峰法)
如: tankShotGame
4.常量名:全大写XXX_YYY_ZZZ
如 TAX_RATE
关键字和保留字
有特殊含义的字符串
键盘输入
1.导入该类所在包,java.util
2.创建该类对象
3.调用功能
进制
二进制(ob)
八进制
十进制
十六进制(ox):0-9.A(10)-F(15),A-F不区分大小写
二,八十六进制转十进制
二转十
0101 = 1 * 2^0+0*2^1+1*2^2以此类推
八转十
0234=4*8^0+3*8^1+2*8^2+0*8^4=156
十六进制
同理,0x表示十六进制
十转二
短除法
十转八
同理,除2改为除8即可
十转十六
同 除16即可
二转八
从低位开始,将二进制分为三位一组,把每一组转成对应的八进制数即可
二转十六
从低位开始,将二进制分为四位一组,把每一组转成对应的十六进制数即可
八转二
将八进制每一位转为三位二进制数即可
十六转二
将十六进制每一位转为四位二进制数即可
原码补码反码
- 二进制的最高位都是符号位:0表示正数,1表示负数.(记忆:1旋转90度就是-)
- 正数三码合一
- 负数的反码=他的原码符号位不变,其他位按位取反
- 负数的补码=它的反码+1,负数的反码=负数的补码-1
- 0的原码反码都是0
- Java中的数都是有符号的
- 计算机运算的时候都是以补码来运算的
- 当我们看运算结果时原码(!!)
位运算符
7个位运算:& | ^ ~ >> << >>>
按位与&:11=1,其余0
按位或|:00=0,其余为1
按位异或^:不同为1否则为0
按位取反~:0->1,1->0
另三个位运算符>> << >>>
>>算术右移:低位溢出 符号位不变,并用符号位补溢出的高位 理解:在进行算术右移时,如果原数的符号位为0(表示正数),则在高位补0;如果原数的符号位为1(表示负数),则在高位补1。
<<算术左移:符号位不变,低位补0左移同理
>>>逻辑右移也叫无符号右移运算规则:低位溢出高位补0 无论符号位为什么都补0