JavaSE数据类型和变量

目录

一、数据类型:

1、基本数据类型:

2、引用数据类型: string 数组 类 接口 

二、变量

1、整型变量

2.短整型

 3、长整型

4、浮点型

4、字符型

5、 字节型变量

6、布尔型变量

三、强制类型转换和整型提升


一、数据类型:

1、基本数据类型:

   
四类:整型 浮点型 字符型 布尔型
八种:
 * 整型   byte(1) short(2) int(4) long(8)
 * 浮点型 float(4) double(8)
 * 字符型 char(2)
 * 布尔型 boolean(没有明确的大小)
无论32或64位机器,int就是4字节,long就是8字节。所以java的可移植性很高,跨平台便捷。
        在java中数值都是有符号的,都有正负,最高位为符号位,剩下都为数值位。(区别与C语言的signed和unsigned)

2、引用数据类型: string 数组 类 接口 

 public static void main8(String[] args) {
        String str = "hello";
        System.out.println(str);
        System.out.println(str.length());//字符串长度5
        /**
         * String 是引用数据类型
         * 与C语言不同,该字符串“Hello",没有以\0为结尾标志
         * 它的字符串长度就是 5,不是6
         */

        String str2 = "345";
        int val = Integer.valueOf(str2);//将字符串转化为整型数值
        System.out.println(val+1);//将该数值+1得到 346

        int p = 100;
        String str3 = String.valueOf(p);//将整型数值转化为字符串
        System.out.println(str3);//打印该字符串 100

        int a = 10;
        int b = 20;
        System.out.println("a = "+a +" b = "+b);//a = 10 b = 20
        //字符串+其他类型,此时的+是起一个拼接的作用,变成一个整体的字符串
        System.out.println("a + b = "+a+b);//a + b = 1020
        //字符串+其他+其他,两个整型不会相加,同样也只是拼接
        System.out.println(a+b + "a + b");//30a + b
        //其他+其他+字符串,其他类型先运算,之后再拼接字符串

    }

二、变量

1、整型变量

public static void main2(String[] args) {
        //二、变量
        //1、整型变量
        int a = 10;
        System.out.println(a);

        int b;
        b = 100;
        System.out.println(b);

//        int c;
//        System.out.println(c);//报错
        //原因:java里为了体现其安全性,局部变量在使用前必须初始化。否则报错。

        System.out.println(Integer.MAX_VALUE);//int能储存的最大值 2147483647  (2^7-1)
        System.out.println(Integer.MIN_VALUE);//int能储存的最小值 -2147483648 (-2^7)
        /*Integer是一种包装类型,记下来。暂且认为是int的plus版。
         */
/**
 *          int d = 2147483648;//java当中,赋值的“字面值常量”一旦超过了变量能储存的最大值,会自动编译报错!
 *          int d = 2147483647 + 1;//这样是没问题的,不会报错,但是会溢出。
 *         int d = 2147483647 + a;//这样是没问题的,不会报错,但是会溢出。
 */

    }

2.短整型

    public static void main4(String[] args) {
        /**
         * short 短整型 2字节
         * 16比特位,其中15个数值位
         */
        short a = 10;
        System.out.println(a);
        System.out.println(Short.MAX_VALUE);//32767(2^15-1)
        System.out.println(Short.MIN_VALUE);//-32768(-2^15)

      

 3、长整型


    public static void main3(String[] args) {
        /**
         * 2、长整型 8个字节
         *  64比特位,其中63个比特位
         */
        long a = 10L;//建议大写L,可以写成10l(可以小写,但是这样不易看清是数字101还是10)

        System.out.println(a);
        System.out.println(Long.MAX_VALUE);//9223372036854775807(2^63-1)
        System.out.println(Long.MIN_VALUE);//-9223372036854775808(-2^63)

    }

4、浮点型

public static void main5(String[] args) {
        double d = 12.5;
        System.out.println(d);

        double a = 1.0;
        double b = 2.0;
        System.out.println(a/b);//0.5

        int c = 1;
        int e = 2;
        System.out.println(c/e);//0
        System.out.println(c*1.0/e);//0.5

        double num = 1.1;
        System.out.println(c*1.0/e);//0.5
        System.out.println(num*num);//理论上是1.21,但是由于计算机对浮点数的储存标准,实际上是 1.2100000000000002
        /**
         * 小数并没有一个非常精确的数字,一般会精确到小数点的后几位
         * 参考之前C语言学到的浮点数的存储
         * 以float为例
         * S - 符号位,E - 指数位, M - 小数位
         * 1个符号位,8个指数位,23个小数位
         */

       // float f = 12.5;//这样写会报错,因为浮点数默认为double型。而double型存到float型里,会损失精度
        float f = 12.5f;//在后面加上f/F就好了
    }

4、字符型

 public static void main6(String[] args) {
        /**
         * 与C语言不同,java使用Unicode编码方式
         * char 字符型 占 2 个字节
         * 也就是说可以表示的字符种类更多,包括中文
         */
        char a = 'A';
        char b = '张';
        System.out.println(a);
        System.out.println(b);
        System.out.println((int)(Character.MAX_VALUE));//单独打印Character.MAX_VALUE是字符,所以强制类型转换看一下最大值
        System.out.println((int)(Character.MIN_VALUE));

        
    }

5、 字节型变量

  /**
         * byte 字节型 1字节
         * 8个比特位,其中7个是数值位
         */
        byte  b = 127;
        System.out.println(b);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }

6、布尔型变量

/**
         * 布尔型 boolean (未明确说明字节大小)
         */
        boolean flg = true;//boolean类型只能赋值true或者false
        System.out.println(flg);
        //System.out.println(true+1);//err

boolean b = true ;
System . out . println ( b );
b = false ;
System . out . println ( b );

三、强制类型转换和整型提升

Java 中,当参与运算数据类型不一致时,就会进行类型转换。 Java 中类型转换主要分为两类:自动类型转换 ( 隐 式) 和 强制类型转换 ( 显式 )

 public static void main7(String[] args) {
        int a = 100;
        long b = 10L;
        b = a;//数据范围int-》long ,由小变大,隐式转换
        //a = b;//err数据范围由大变小,需要强制类型转换,否则编译错误
        a = (int)b;//强制类型转换会损失精度,同时只有相关类型才能强制转换,例如boolean和int就能不强制类型转换

        int x = 10;
        long y = 20;
        //int z = x + y;//err
        long z = x + y;//方法1(推荐):将z变量定义为大范围数据类型
       // int z = (int)(x + y);//方法2:将(x+y)强制类型转换为小范围数据类型,此时可能会导致精度丢失

        byte f1 = 10;
        byte f2 = 20;
       // byte f = f1 + f2;
        // err,虽然f1f2都是byte类型,但是计算时,会提升为int再计算,得到的结果也是int,此时赋值给byte型的f,会报错
        int f = f1 + f2;//方法1(推荐):将要赋值的f定义为大范围数据类型int
        //byte f = (byte)(f1 + f2);//方法二:强制类型转换
        /**
         * 计算机的cpu通常是按照4个字节从内存中读取数据。所以为了硬件实现方便,例如byte和short这种
         * 低于4个字节的数据类型,会先提升成int,再进行计算
         */
    }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值