【JAVASE_学习笔记】数据类型

【JAVASE_学习笔记】数据类型

常量

常量:程序运行中其值不变的量
常量类型:1.字面值常量:
       a.整数常量  如12
       b.小数常量  如3.14
       c.布尔常量  布尔常量只有两个值,true,false
       d.字符常量  单个字符使用单引号引起来的内容  如’a’
       e.字符串常量 数据内容使用双引号引起的内容  如”helloworld” 
       f.空常量   null
     2.自定义常量(与关键字:final有关:面向对象部分讲解)

public class ConstantDemo {
    public static void main(String[] args) {
        //字符串常量
        System.out.println("helloworld");
        //字符串 +(拼接符号) 任何数据 = 字符串
        System.out.println("helloworld"+'a'+1);//helloworlda1
        System.out.println('a'+1+"helloworld");//98helloworld
        System.out.println("5+5="+5+5);//5+5=55
        System.out.println(5+5+"=5+5");//10=5+5

        System.out.println("------------------------");

        //字符常量
        //不参与运算
        System.out.println('A');
        System.out.println('a');
        System.out.println('0');
//      System.out.println('ab');//错误
        System.out.println("------------------------");

        //当字符参与运算的时候,就需要带ASCII码表中找字符对应的值
        //'A'---->65
        //'a'---->97
        //'0'---->48
        System.out.println('A'+1);//66
        System.out.println('a'+1);//98
        System.out.println('0'+1);//49
        System.out.println("----------------------");

        //整数常量
        System.out.println(100);
        //小数常量
        System.out.println(3.1415926);
        System.out.println("-------------------");
        //布尔常量
        System.out.println(true);
        System.out.println(false);
        //空常量
        String s = null ;//针对引用类型
        System.out.println(s);
    }
}

变量

变量:程序运行中其值可以发生变化的量
A.八种基本数据类型
     1.整数类型:
     byte  (字节)  1字节(8bit)   范围:-128~127
     short (短整型)  2字节(16bit)
     int  (整型)   4字节(32bit)
     long (长整型)  8字节(64bit)
     2.小数类型:
     float  (单精度浮点型)  4字节(32bit)
     double (双精度浮点型)  8字节(64bit)
     3.布尔类型:
     boolean (布尔类型)    1个或4个字节
          用于声明一个基本类型变量时占四个字节
          用于声明一个数组类型时,数组中每个元素占一个字节
     4.字符类型:
     char    (字符类型)    2个字节
B.引用类型  如String
注意:
对于整数类型:
     默认的类型:int类型
     使用long类型定义变量,在当前变量值的后面加上L或者l(推荐使用L),告诉系统我定义的是一个long类型
浮点类型:
     默认双精度:double
     定义float类型,在该变量值的末尾跟上F或者f

public class DataTypeDemo {
    public static void main(String[] args) {
        //byte类型
        byte b = 100 ;
        System.out.println(b);
        System.out.println("--------------");

        //短整型
        short s = 20 ;
        s = 50 ;
        System.out.println("s:"+s);
        System.out.println("--------------");
//      int i = 1000000000000;
//      System.out.println("i:"+i);
        //长整型
        long l = 1000000000000L;
        System.out.println("l:"+l);

        //浮点类型:默认double类型
        double d = 12.56 ;
        System.out.println("d:"+d);

        //单精度
        float f = 12.34F ;
        System.out.println("f:"+f);

        //由于浮点类型存储和整数类型的存储不一致.导致:永远是一个近似值:BigDecimal
//      System.out.println(1.0-0.32);

        //char类型
        char ch = 'A' ;
        System.out.println(ch);

        //boolean类型
        boolean flag = true;
        System.out.println(flag);



    }
}

变量的定义(声明)

格式:
   方式一:数据类型 变量名;
   方式二:数据类型 变量1,变量2…;
注意:
   1.在java中,定义一个变量不能重复定义
   2.建议不要再同一行上定义多个变量
   3.定义变量不能以数字开头

public class DataTypeDemo2 {
    public static void main(String[] args) {
        //定义变量
        int a = 10 ;
//      int a = 20 ;
        a = 20 ;


        //一行定义多个变量,中间用逗号隔开
//      int m = 10 ,n = 20 ,x = 30 ;
        int m = 10 ;
        int n = 20 ;
        int x = 30 ;

        //不能以数字开头
//      int 2z = 40 ;
    }
}

数据类型转换

注意:
1.byte,short,char类型数据在运算时自动转换成int类型再运算
2.两个不同类型数据运算,结果取决于大的数据类型数据

int类型数据+long类型数据   结果为long类型

小数据类型——>大数据类型  自动类型转换
大数据类型——>小数据类型  强制类型转换(会损失精度)
强制类型转换格式:
  目标数据类型 变量名=(目标数据类型)(大数据类型数据)
练习:

/*
 * 面试题:
            byte b1=3,b2=4,b;
                b=b1+b2;
                b=3+4;
            哪句是编译失败的呢?为什么呢

    第一句编译失败:存在默认类型转换,如果想让改代码不报错,正常运行,必须强制类型转换
    第三句话:b = 3 + 4 ;属于常量相加,先相加---->看结果是否在当前该数据类型范围内,在就不会报错!
 * */
public class DataTypeDemo3 {
    public static void main(String[] args) {

        byte b1 = 3,b2 = 4 ,b ;

//      b =  b1 + b2 ;//错误的:byte类型不可能接收一个int类型的值
        b = (byte)(b1 + b2) ;

        b = 3 + 4 ;
        System.out.println("b:"+b);
    }
}

负数的存储

负数的最高位为1,正数最高位为0
负数在计算机中存储的是补码
补码运算步骤(负数):
    1.先得到负数的二进制码(原码);
    2.最高位不变,原码取反(反码);
    3.反码加一       (补码)
正数的原码,反码,补码相同
练习:

/*
 * 面试题
        byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?


            有问题:超出范围:byte的取值范围:-128~127
            想让 赋值正确,就必须强制类型转换,结果-126

 * */
public class DataTypeDemo4 {
    public static void main(String[] args) {
        //定义变量
        byte b =(byte)130 ;

        System.out.println("b:"+b);
    }
}
/*
 * 130看成四个字节:默认int类型
 *  计算出对应的二进制数据
 *          00000000 00000000 0000000   10000010
 * 
 *          最高符号位是0,当前整数,该数据对应的原码,反码,补码都一样
 *      
 *          计算机底层是通过补码进行运算:byte b = (byte)130;
 *          10000010(补码)----->原码
 * 
 *      最高符号位               数值位
 *      1                   0000010         补码
 *                               -1
 *      1                   0000001         反码  --->最高符号位不变,数值位按位取反
 *      1                   1111110
 * 
 * 结论:      
 *      -                   64+32+16+8+4+2
 *      -                   126
 * 
 * */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值