进制的转换易错点、成员变量和局部变量的区别、标识符

进制

(计算机中默认是十进制)

二进制:0和1,如0110
二进制的整数以 0b 或 0B 开头

int i=110;         //结果为110
//前缀0b表示为二进制数
int i=0b110;         //结果为6

逢2进1
1+1=10 11+1=100 111+1=1000

        //定义两个 8 位的二进制整数 
		int binVa11 = 0b11010100; 
		byte b工nVa12 = 0B01101001; 
		// 定义一个 32 位的二迸制整数, 最高位是符号位
		int binVal3 = 0B10000000000000000000000000000011;
		System.out.println(binVa11) ;   // 输出 212 
		System.out . println(b工nVa12) ;   // 输出 105 
		System. out .println(binVal3);   //输出 -2147483645

从上面代码可以看出, 当定义 32 位的二进制整数时,最高位其实是符号位,当符号位是 1 时, 表明它是一个负数,负数在计算机里是以补码的形式存在的,因此还需要换算成原码。

提示:所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。 但计算机以补码的形式保存所有的整数。补码的计算规则: 正数的补码和原码完全相同,负数的补码是其反码加 1 ;反码是对原码按住取反,只是最高位(符号位) 保持不变。

将上面的二进制整数 binVal3 转换成十进制数的过程如图 2所示。
在这里插入图片描述
整数值默认就是 int 类型,因此使用二进制形式定义整数时,二进制整数默认 占 32 位, 其中第 32 位是符号位;如果在二进制整数后添加 l 或 L 后缀,那么这个二进制整数默认占 64 位,其中第 64 位是符号位。 例如如下程序。

         /*
		 定义一个8位的二进制,该数值默认占32位,因此它是一个正数。
		 只是强制类型转换成byte时产生了溢出,导致它变成了负数。 最终导致binVal4变成了-23(计算方式和上面图2同)
		 */
		byte binVal4 =  (byte)0b11101001;
		/*
		  定义一个32位的二进制数,最高位是1。
		  但由于数值后添加了L后缀,把它当成 long 类型处理,因此该整数的实际占64位,第32位的1不是符号位。
		  因此binVal5的值等于2的31次方 + 2 + 1
		 */
		long binVal5 = 0B10000000000000000000000000000011L;
		System.out.println(binVal4); // 输出-23
		System.out.println(binVal5); // 输出2147483651

八进制:0-7

//前缀为0

```java
//以 0 开头的整数值是八进制的整数
int i=065;         //53

逢8进1
7+1=10 27+1=30 77+1=100

十六进制:0-9 a-f 前缀为0x
十六进制的整数以 0x 或者 0X 开头

12a;    //error,既不是整数也不是字符串
//以 0x 或 0X 开头的整数值是十六进制的整数
0x12a;   //298

9+1=a a+1=b f+1=10
39+1=3a 3f+1=40 99+1=9a
9f+1=a0 af+1=b0 ff+1=100

进制的转换

  1. 十进制转二进制(八进制,十六进制) 除2后将余数从下向上排
    13转二进制结果为1101
  2. 二进制转十进制
  3. 十进制的小数转二进制(了解) 乘2取整
    (1)如0.125
    0.125×2=0.25 0
    0.25×2=0.5 0
    0.5×2=1 1 所以0.125的二进制为0.001
    (2)123.125 分开算(123➗2算写到整数部分,0.125
    2写到小数部分)
  4. 二进制转八进制、十六进制
    1101010——八进制
    001 101 010 结果为 0152
    1101010——十六进制
    0110 1010 结果为0x6a

成员变量和局部变量

局部变量:在使用之前必须先赋值
成员变量:在创建对象时,分配内存存放类的数据,初始化有默认值

  1. byte,short,int,long 默认为0;

  2. float 默认0.0

  3. char 默认’/u000’

  4. boolean 默认false

  5. 引用类型 默认null

 //类体中只能定义变量和方法,语句不能放类体中
 int    x;
 x=20;  //error
 int x=20;
 //成员变量和局部变量可重名

标识符

用来给类,变量,方法等起名的符号
组成:a-z A-Z 0-9 _ $ 各个国家的文字(后两个不建议使用)
规定: 不允许使用单独的下画线(_)作为标识符

合法性:

  • 首尾不能是数字
  • 不能为关键字和保留字。
    Java 的所有关键字都是小写的, TRUE、 FALSE 和 NULL 都不是 Java 关键字。
    goto 和 const 被称为保留字 。保留字的意思是,可能在未来的 Java 版本中使用这两个关键字;不仅如此, Java 还提供了三个特殊的直接量: true、 false 和 null; Java 语言的标识符也不能使用这三个特殊的直接量。
 int boolean;   //error
  • 不能包含空格
  • 不能包含@、#等其他特殊字符。
String    er@="he";    //error

Java 语言是区分大小写的,因此 abc 和 Abc 是两个不同的标识符。

int Class;  //正确的

注释

单行注释: //
多行注释: 使用"/* “和”*/"
文档注释: /** */

如果编写 Java 源代码时添加了文档注释,然后通过 JDK 提供的 javadoc 工具可以直接将文档注释生成一份系统的 API 文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值