欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java类型自动转换

程序员文章站 2024-03-18 18:20:04
...
package com.kevin.basic;

/*
 * java类型自动转换方面的知识点
 * int类型       double类型  默认类型
 */
public class Test {

	/**
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/* int类型是整数的默认类型。
		 * (1)第一种:正确运行,结果为10.
		 * 3是int类型,7是int类型,3+7=10也是int类型,当把常量10赋值给byte类型b时,java编译器
		 * 会进行范围检查,发现10没有超越byte类型的取值范围-128~127,所以可以正常将int类型转换为byte类型
		byte b = 4;
		b = 3+7;
		System.out.println(b);
		*/
		
		/*(2)第二种:出现错误,提示可能会损失精度。
		 * 因为b1,b2都是变量,java编译器在进行判断时无法判断b1+b2的取值范围,是否会超过-128~127这个范围
		 * 所以会给出可能损失精度的错误提示。
		byte b1 = 3;
		byte b2 = 7;
		b = b1+b2;
		System.out.println(b);
		*/
		
		/*	2147483647     整型最大值
			-2147483648  整型最小值
			-2147483647 
		 * 
		int max = Integer.MAX_VALUE;
		int min = Integer.MIN_VALUE;
		int x = max + 2;
		System.out.println(max);
		System.out.println(min);
		System.out.println(x);
		*/
		
		/*
		 * 正常运行:+=是赋值运算符,java在进行运算时会进行自动类型转换。
		 *  += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
		short x = 2;
		x += 3;
		System.out.println(x);// x = 5;
		*/
		
		/* x+3运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型x时,编译器将报告需要强制转换类型的错误。
		 * :因为 x+3 的取值范围不确定,有可能会超过短整型所能表示的数值。
		short x = 2;
		x = x+3;
		System.out.println(x);
		*/
		
	}

}