2_标识符,基本数据类型,Scanner,类型转换,二进制原码

Java学习笔记2

南山的风吹散了谷堆,北海的水淹没了墓碑.
不是每个人,在蓦然茴首时,都可以看得到灯火阑珊处的那个人


Debug 工具

Debug调试,又被称为断点调试,断点其实是一个标记,告诉Debug从标记的地方开始查看;

可以运行两个断点之间的代码

标识符命名规则

  • 由数字、字母、下划线(_)和美元符($)组成
  • 不能以数字开头
  • 不能是关键字
  • 区分大小写

标识符命名规范

小驼峰命名法:变量

规范1:标识符是一个单词的时候,所有字母小写 name

规范2:标识符由多个单词组成的时候,从第二个单词开始,首字母大写 firstName

大驼峰命名法:类

规范1:标识符是一个单词的时候,首字母大写 Student

规范2:标识符由多个单词组成的时候,每个单词的首字母大写 GoodStudent

基本数据类型

整数默认是int 当long时数据尾部加L

浮点数默认是double 当float时数据尾部加F

byte型数据取值范围-128~127

Scanner

输入字符串是scanner.next()

整数浮点数是scanner.nextInt;scanner.nextDouble;

字符串拼接

当 + 操作中,遇到了字符串,这时 + 就是字符串连接符,而不是算术运算。

1
System.out.println("1+1="+1+1);

输出:1+1=11

原因:逐个分析数据,先+1,然后整体再+1;就是”1+1=1“+1,结果1+1=11

自增自减

只操作变量。(常量不行)

  • 如果放在变量的后边,在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
  • 如果放在变量的前边,先对变量进行+1、-1,再拿变量的值进行运算。
1
2
3
4
int a = 3;
int b = (++a) + (a++) + (a*10);
System.out.println("a=" + a); //a=5
System.out.println("b=" + b); //b=58

类型转换

隐式转换

介绍: 将取值范围小的数据或变量, 给取值范围大的变量赋值, 可以直接赋值
取值范围从小到大

1
byte -> short(char) -> int -> long -> float -> double

问题: float占用4个字节, 为什么放在了long(8个字节)的后面*
解释: 虽然float占用4个字节, 但是 [取值范围] 要比8个字节的long 更大
- 小数的二进制存储形式, 更加节省内存*

基本的隐式转换:
把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量

运算中的隐式转换:
取值范围小的数据,和取值范围大的数据进行运算,小的会先提升为大的之后,再进行运算
byte short char 三种数据在运算的时候,都会提升为int,然后再进行运算

强制转换

介绍 : 将取值范围大的数据或变量, 给取值范围小的变量赋值, 不允许直接赋值, 需要加入强转

注意 : 强制转换 [有可能] 会出现精度损失

强转中的精度损失
1
2
3
int a = 130;
byte b= (byte) a;
System.out.println(b); //-126

解释:

1.整数130 :默认为int,int占用4个字节,也就是4组8个二进制位

00000000 00000000 00000000 10000010‬

2.强转到byte:4个字节,强制转换为1个字节,就是砍掉前3组8位

10000010‬

3.根据运算后的补码,反向推原码

11111110 即-126

计算机中进制的分类∶

1
2
3
4
5
6
7
计算机中进制的分类 :

十进制 : 默认
二进制 : 0b开头
八进制 : 0开头
- 编写数值, 尽量不要以0开头{09就是错误的}
十六进制 : 0x开头

类型转换两种实例:

类型转换面试题 : 下列代码是否存在错误, 如果有, 请指出说明, 并改正

1
2
3
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;

错误原因:
b1和b2是两个byte类型, 在运算的时候, 会提升为int类型
提升之后, 就是两个int在运算了, 运算的结果还是int.
将int类型的结果, 赋值给byte类型的变量, 属于大给小, 不能直接给.

修改后:

1
2
3
byte b1 = 3;
byte b2 = 4;
byte b3 = (byte)(b1 + b2);

下面代码是否能编译通过:

1
byte b = 3 + 4;

可以解释:Java存在常量优化机制 : 在编译的时候 (javac) 就会将3和4这两个字面量进行运算.
产生的字节码文件 : byte b = 7;

反编译

可以将编译好的.class文件拖到IDEA中(或者直接jdk工具),查看编译后的文件变化。

如上述:byte b = 3+4 ;

反编译后 :byte b = 7;

反码 原码 补码

计组中的知识点,简单汇总

原码
数据的二进制体现形式,一个字节由 8 个二进制位组成
高位:二进制数据中,最左侧的数据,通过高位代表符号位
0 代表正数
1 代表负数
其余位,表示数值大小
弊端:遇到负数运算,可能会出现错误

反码
正数的反码与其原码相同
负数的反码是对其原码逐位取反,但符号位除外

补码
正数的补码与其原码相同
负数的补码是在其反码的末位加1


2_标识符,基本数据类型,Scanner,类型转换,二进制原码
http://example.com/2023/02/01/Java学习笔记02/
作者
zhanghao
发布于
2023年2月1日
许可协议