JAVA Day1
1.基本数据类型 四类八种
boolean 1位
byte 1字节
short char 2字节
int float 4字节
long double 8字节
2.为什么byte 占一个字节是 -128到127
能够表示的最小二进制是10000000。但是注意,这是一个补码,
我们需要根据规则反向求出它本身的原码,首先减去1,得到01111111,
然后在求反,得到10000000,换算成十进制就是128,加上符号,即-128
3.隐式转换:
大 = 小 + 大
4.强制转换
小 = (小的类型)(小 + 大)
5.变量相加和常量相加的区别
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
* 从两方面去回答这个题
* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
* byte类型的变量在进行运算的时候,会自动类型提升为int类型
byte b4 = 3 + 4;
* 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
6.进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型
其他类型进行混合运算的是小的数据类型提升为大的
7.字符和字符串参与运算
- 任何类型的东西和String相加都会变成字符串类型~
- 字符是基本数据类型,因此字符和int运算会提升至int类型进行计算~
// * 记住三个值:
// * '0' 48
// * 'A' 65
// * 'a' 97
System.out.println("hello" + 1 + 'a');
// hello1a
System.out.println(1+ 'a'+ "hello");
//98hello 先将a的级别提升至int 然后与一相加
System.out.println("hello" + (1 + 'a'));
// hello98 小括号 优先
8.char数据类型
* A:char c = 97; 0到65535 因为不存在负数
* B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
* 可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
* 所以,Java中的字符可以存储一个中文汉字
* 不可以存两个,因为char类型只能存储一个字符,包括汉子
算术运算符的基本用法
- b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
float a = 10/ 3f; //3.0
float a = 10/ 3.0f; //3.333333
* c:/获取的是除法操作的商,%获取的是除法操作的余数
* %运算符
* 当左边的绝对值小于右边绝对值时,结果是左边
* 当左边的绝对值等于右边或是右边的倍数时,结果是0
* 当左边的绝对值大于右边绝对值时,结果是余数
* %运算符结果的符号只和左边有关系,与右边无关
* 任何一个正整数%2结果不是0就是1可以用来当作切换条件
System.out.println(6%-5); //1
System.out.println(-796%-5); //-1
System.out.println(-796%5); //-1
9.算术运算符++和–
* a:单独使用:
* 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
* b:参与运算使用:
* 放在操作数的前面,先自增或者自减,然后再参与运算。
* 放在操作数的后面,先参与运算,再自增或者自减。
10.赋值运算符的基本用法
-
a:基本的赋值运算符:=
* 把=右边的数据赋值给左边。- b:扩展的赋值运算符:+=,-=,*=,/=,%=
- += 把左边和右边做加法,然后赋值给左边。
*
注意区分 a= a+1 和 a += 1
如上题 a =a + 4 是错误的 , a = a + 4 : a+4先转换成int类型进行计算
- += 把左边和右边做加法,然后赋值给左边。
- b:扩展的赋值运算符:+=,-=,*=,/=,%=