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

主类和主方法
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移植性的关键)
数据类型
在这里插入图片描述
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);
    }
}

在这里插入图片描述
到达整型最大值或最小值后,需要转换数据类型:

  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);

在这里插入图片描述
结果依然是溢出,是因为执行顺序是从右向左,右边是int类型相加,这时已经溢出,那么max里存的就是溢出值。
解决方法如下:

long maxValue=Integer.MAX_VALUE+1L;  //int 和long相加,int会自动提升成long
long minValue=(long)(Integer.MIN_VALUE-1);  //强转为long

在这里插入图片描述
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);
    }
}

在这里插入图片描述
解决办法如下:

public class Int
{
    int value;
    public  static void main(String[] args)
    {
        Int i1=new Int();  //需要结合类来看
        System.out.println(i1.value);  //0 
    }
}

猜你喜欢

转载自blog.csdn.net/sophia__yu/article/details/83014098