后端开发 \ Java \ Java初认识--基本数据类型(int 和byte之间赋值)默认值 类型强转

Java初认识--基本数据类型(int 和byte之间赋值)默认值 类型强转

总点击49
简介:主类和主方法 Test.java–是源文件,源文件必须与主类名(publicclass)保持一致,一个源文件只能有一个主类,主方法存在与主类中。

主类和主方法


Test.java–是源文件,源文件必须与主类名(public class )保持一致,一个源文件只能有一个主类 ,主方法存在与主类中。


Test.java 源文件


主类:public class Test


主方法 : public static void main(String[] args)


Java程序编译–执行流程


编译:javac Test.java —>Test.class(二进制文件)(若程序中出现中文,可以加上 -encoding UTF-8)


解释:java Test(主类名称)


命令行向主方法传参 java 主类名称 参数1 参数2 (参数1是args[0],参数2是args[1])


JDK JRE


JDK:java开发工具包,包含JRE,多了编译器javac 以及调试工具 JConsole、jstack,针对java程序员;


JRE: java运行时环境,包含JVM以及Java核心类库,是运行Java程序的环境,针对使用Java程序的客户;


JAM: java虚拟机,(Java移植性的关键)


数据类型


Java初认识--基本数据类型(int 和byte之间赋值)默认值  类型强转


int


在java中,任何一个整型常量都是int类型。


整型溢出:

public class Int

{

public static void main(String[] args)

{

//int 的包装类是Integer

int maxValue=Integer.MAX_VALUE+1;//整型最大值+1,会溢出

int minValue=Integer.MIN_VALUE-1; //整型最小值-1,会溢出

System.out.println(maxValue);

System.out.println(minValue);

}

}

Java初认识--基本数据类型(int 和byte之间赋值)默认值  类型强转


到达整型最大值或最小值后,需要转换数据类型:

int maxValue=Integer.MAX_VALUE;

int minValue=Integer.MIN_VALUE;

long max=maxValue+1;

long min=minValue-1;

System.out.println(max);

System.out.println(min);

Java初认识--基本数据类型(int 和byte之间赋值)默认值  类型强转


结果依然是溢出,是因为执行顺序是从右向左,右边是int类型相加,这时已经溢出,那么max里存的就是溢出值。


解决方法如下:

long maxValue=Integer.MAX_VALUE+1L; //int 和long相加,int会自动提升成long

long minValue=(long)(Integer.MIN_VALUE-1); //强转为long

Java初认识--基本数据类型(int 和byte之间赋值)默认值  类型强转


Java中小的数据与大的数据做数值运算,小的数据类型会自动提升为大的数据类型,当把I(int)声明为long(在数字后加L或l,但推荐使用L,如num=11+1l=12,而不是22,推荐写成11+1L,不容易造成混淆)。


在java中,大的数据转换为小的数据,必须强转,但会造成数据丢失。


long num = 2147483648L;


int result = (int) num; //需要强转


int 和byte


//整型常量在byte范围内

byte a=120; //byte取值范围是 -128-127

System.out.println(a); //120

//整型常量不在byte范围内--》需要强转

//byte b=130;// 错误(从int转换到byte可能会有损失)

byte b=(byte)130; //强转为byte

System.out.println(b); //-126

byte c=(byte)300;

System.out.println(c); // 44 取的是300的低吧8位即44

//整型变量--》需要强转

int num=12;

//byte d=num; //错误(从int转换到byte可能会有损失)

byte d=(byte)num;

System.out.println(d); //12

整型常量若在byte类型的保存范围内,可以直接赋给byte变量,不用强转;


整型常量若不在byte类型的保存范围内,必须强转;


整型变量无论值是否在byte范围内,都需要强转;


上述只限于int 和byte。


对于int 和byte取值范围可参考这篇博客:https://blog.csdn.net/sophia__yu/article/details/81143145


默认值


在最上面一张图,有各个类型变量的默认值,但是默认值需要结合类来观察,主方法中变量必须先赋值再使用,在主方法中不存在默认值否则会报错;

public class Int

{

public static void main(String[] args)

{

int value; //错误

System.out.println(value);

}

}

Java初认识--基本数据类型(int 和byte之间赋值)默认值  类型强转


解决办法如下:

public class Int

{

int value;

public static void main(String[] args)

{

Int i1=new Int(); //需要结合类来看

System.out.println(i1.value); //0

}

}

意见反馈 常见问题 官方微信 返回顶部