整数型字面值

1、java当中“整数型字面值”被默认为int类型处理。

2、要让整数型字面值当做long处理的话。需要在整数字面值以后加大写L 。

      例如:long i = 1800L ;

3、JAVA当中整数型字面值有三种方式
                
                 *十进制 【一种缺省默认的方式】

                 *八进制 【在编写八进制整数型字面值是需要以 0 开头】

                 *十六进制【在编写十六进制是需要以 0x 开头】
 

public class Datatype03
{
	public static void main(String[] hfsl){
	
		int a = 10 ;// 十进制

		int b = 010;//八进制

		int c = 0x10;//十六进制

		System.out.println(a);//10
    
		System.out.println(b);//8
 
		System.out.println(c);//16

		System.out.println(a+b+c);//34

		int cd = 299;

		System.out.println(cd);

		long e = 2147483648L; //所有整数都默认为int类型其范围为(-2147483648 ~ 2147483647),超出则不能赋值。
						    
		System.out.println(e);//如上所述编译不带L 会报错,因为已经超出了其范围。
	}
}

 强制数据类型转换:当所赋值的数值大小超过范围时候要加强制类型转换符(有可能损失精度)。

 

例如:

long n = 2147483648 ; 赋值报错 因为 int 的取值范围为(- 2147483648 , 2147483647 ) 所以超出了取值范围。
故应该添加 L 在字面值后面 变成 long n = 2147483648L 将它变成 long 类型数值。

强制类型转换(被转换的字面值过大,就会损失精度)

byte i = 50 ;可以编译通过,因为byte范围 为(-128 , 127 )

byte  k =(byte)128; 超出范围 故要加 强制类型转换符号。

并且最终以补码的形式储存在计算机里面

public class Datatype03
{
	public static void main(String[] dhu){
		
		long x = 100L;
	
	      //int y  = x ; //转换产生不兼容,会有损失。int类型是4个字节 long类型是8个字节。
	                 
	    int y =(int)x ;//大容量转换小容量需要强制类型转换,不过可能会损失精度。
		          
                            //强转原理:原始数据00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100
                            //强转之后:00000000 00000000 00000000 01100100
			    //将左边的二进制砍掉

		System.out.println(y);//100

	long k = 2147483648L;

		int e = (int)k;

		System.out.println(e); //-21474836489[损失精度严重,结果是负数]

		byte b =50;//目前所学知识可知,其难以编译,因为50默认为int类型,byte则为小容量,因此不能编译。

		byte c = 127 ;//pass a test 通过

		
		//byte d = 128 ;//不通过 
		            
       
		byte d = (byte)128; //Translating by coercion(强制转换)

		System.out.println(d);//—128  (complement 补码)
		

                    反码 :负数绝对值对应二进制所有二进制位取反再加1.
		*/
		byte m = (byte) 198;

		System.out.println(m);

		// 所以判断是否需要添加强制类型转换符,得看所要赋值的数字它是否超出取被复制类型的取值范围。

              //例如:short s (—32768  ~  32767)  =  (short)32768
               short s = 32767;

		System.out.println( s );

		s = (short)32768;

		System.out.println( s );// —32768  超出范围后,输出的以补码形式输出(数字带负号)

	}
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值