【JAVASE_学习笔记】数据类型

来源:互联网 发布:秦丝生意通 mac os 编辑:程序博客网 时间:2024/05/21 17:58

【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 *  * */
原创粉丝点击