当前位置 博文首页 > 是琳琳呀!的博客:JAVA数据类型的秘密

    是琳琳呀!的博客:JAVA数据类型的秘密

    作者:[db:作者] 时间:2021-08-27 18:41

    JAVA数据类型
    1:变量与类型
    1.变量指的是程序运行是可变的量,相当于开辟了一块内存空间来保存一些数据。
    2.类型则是对变量的种类进行的划分,不同的类型的变量具有不同的特性。
    3.变量主要和我们的内存这样的硬件密切相关:
                    CPU
    在这里插入图片描述

                                                                                                                        冯诺依曼体系
    

    其中输入设备就包括我们的键盘,麦克风等等;输出设备就是屏幕音响等。

    4.一个Java程序的运行包括这几步:

    JVM与JDK,JRE的关系:

    在这里插入图片描述

    JDK的命令有:
    JDK常用的一般就2个命令java和javac:
    1、javac命令,是编译java代码生成class文件;
    2、java命令,是运行java编译好的代码,让程序正常运行。
    3.javadoc:根据 Java 源代码及其说明语句生成的 HTML 文档。
    4.jdb:Java 调试器,可以逐行地执行程序、设置断点和检查变量。
    5:标识符:
    标识符主要包括:类名,方法名,变量名,接口名,变量名
    规则:1.以数字,下划线,字母,美元符号组成;
    2,不能以数字开头;严格区分大小写;
    3.不能以关键字做标识符。
    建议:1:见名思意
    2.不以下划线开头;
    3.驼峰命名分(类名,接口名:首字母大写,后面每个单词首字母大写,(大驼峰)变量名,方法名:首字母小写后面每个字母大写(小驼峰),常量名:全部大写)
    6:数据结构:
                  
    数据结构类型
    基本类型 引用类型

    整数类型:byte short 字符串类型:String
    int long
    浮点类型:double float 数组

    字符类型:char 接口

    布尔类型:boolean 类

    (1):整形变量:(4个字节,不分平台,包装类Integer)
    基本语法格式:int 变量名 =初始值;
    实例:int num=10;(创建变量的时候设置初始值)
    System.out.println(num);//10
    (int a,b,c=10;这里只给c赋了初始值)
    注:JAVA没有无符号类型,int既可以表示正数,也可以表示负数。
    可使用System.out.println(Integer.Max_VALUE);//检查最大值
    System.out.println(Integer.Min_VALUE);//检查最小值
    如果运算结果超出int的范围,就会出现溢出的情况(报错)
    但是这种情况:
    int maxValue=Integer.MAX_VALUE;
    System.out.println(maxValue+1);//-2147483648在这里插入图片描述

    (2)长整型变量(8个字节,不分平台,包装类Long)
    基本语法格式:long 变量名=初始值;
    实例:long num=10L;(创建变量的时候设置初始值)
    System.out.println(num);//10
    可使用System.out.println(Long.Max_VALUE);//检查最大值
    System.out.println(Long.Min_VALUE);//检查最小值
    如果运算结果超出long的范围,就会出现溢出的情况(报错)
    一般int类型在大工程中不够使用,long一般就可满足。
    (3)双精度浮点类型变量(8个字节,不分平台,包装类Double)
    基本语法格式:double 变量名=初始值;
    实例:double num=10.2;(创建变量的时候设置初始值)
    System.out.println(num);//10.2
    一般folat类型在大工程中不够使用,double一般就可满足(数据丢失)
    double a=1.1;
    System.out.println(a*a);//1.2100000000000002(精度误差)
    浮点数的内存布局与整数差别很大,不能单纯的用2的多少次方来表示数据范围
    注:
    int a=1;
    int b=2;
    System.out.println(a/b);//0
    double a=1;
    double b=2;
    System.out.println(a/b);//0.5
    (4)单精度浮点类型变量(4个字节,不分平台,包装类Float)
    基本语法格式:float 变量名=初始值;
    实例:float num=10.2F;(创建变量的时候设置初始值,加F或f后缀不加默认double类型)
    System.out.println(num);//10.2
    (5)字符类型变量(2个字节,不分平台,包装类Character)
    基本语法格式:char 变量名=‘初始值’;
    实例:char ch=‘a’;(创建变量的时候设置初始值)
    System.out.println(ch);//a
    可使用System.out.println(Character.Max_VALUE);//检查最大值
    System.out.println(Character.Min_VALUE);//检查最小值
    如果运算结果超出char的范围,就会出现溢出的情况
    注:因为字符类型占两个字节故可以使用一个字符表示一个汉字(一个汉字两个字节,使用Unicode码表示字符)
    在执行Javac的时候可能会出现以下错误:
    Test.java:3:错误:未结束的字符文字
    此时我们在执行javac时加上-encoding UFT-8选项即可
    Javac -encoding UFT-8 Test.java
    (6)字节类型变量(1个字节,不分平台,包装类Byte)
    基本语法格式:byte 变量名=初始值;
    实例:byte num=1;(创建变量的时候设置初始值)
    System.out.println(num);//1
    可使用System.out.println(Byte.Max_VALUE);//检查最大值
    System.out.println(Byte.Min_VALUE);//检查最小值
    (7)短整型变量(1个字节,不分平台,包装类Short)
    基本语法格式:short 变量名=初始值;
    实例:short num=1;(创建变量的时候设置初始值)
    System.out.println(num);//1
    可使用System.out.println(Short.Max_VALUE);//检查最大值
    System.out.println(Short.Min_VALUE);//检查最小值
    (9)布尔类型变量(没有明确规定一个字节或者一个比特位,包装类Boolean)
    基本语法格式:Boolean 变量名=初始值;
    实例:short value=true;(创建变量的时候设置true真,false假)
    System.out.println(value);//true
    注:JAVA中没有1是true,0是false的表示,不能进行类型转换
    boolean value=true;
    System.out.println(value+1);//报错
    Error:(6, 33) java: 二元运算符 ‘+’ 的操作数类型错误
    第一个类型: boolean
    第二个类型: int
    (8)字符串类型变量(引用类型)
    基本语法格式:String 变量名=“初始值”;
    实例:String name=“hello”;
    System.out.println(name);//hello
    字符串的加操作:
    String name=“hello”;
    int a=1;
    System.out.println(name+a);//hello1
    任何类型的数据和字符串使用“+”拼接,其结果就是一个字符串。
    注:转义字符:
    \n 换行 \ \反斜杠
    \” “一个双引号 \’ ‘一个单引号
    String name="\“hello\”";
    System.out.println(name);//“hello”
    7.变量的作用域:
    也就是说该变量生效的范围,一般是变量定义在所在的代码块中(大括号)
    public class Test {
    public static void main(String[] args) {
    String name="\“hello\”";
    System.out.println(name);//可运行

    }
    System.out.println(name);//不可运行,找不到变量
    

    }

    8:常量:
    常量指的是运行时类型不能发生改变。
    (1)字面值常量(10十进制,1.0,1.0F,10L,0X10十六进制,010八进制,true,’a,”hello”)
    (2)final关键字修饰的常量(赋一次值后不能改变)
    final int a = 10;
    a = 20;//编译出错,无法为最终变量a分配值
    9:类型转换:
    (1)int–>long/double
    int a=10;
    long b=20L;/double=10.2
    a=b;//编译错误,损失精度
    b=a;//编译通过
    不同的数字类型得变量之间赋值,表示范围更小的类型能隐式转变成范围较大的类型,反之不行。
    (2)int–>boolean
    这种不能进行转换,boolean是一种不同的类型,不能相互赋值。
    (3)int–>byte
    byte a=100;//通过
    byte b=256;//报错,从int转化为byte可能会有损失。(byte的范围-128–127)
    (4)int–>String
    int num=10;
    1.String str1=num+“”;
    2.String str2=String.valueof(num);
    (5)String–>int
    String str =“100”;
    int num=Integer.parseInt(str);
    (6)强制类型转换
    int a=1;
    double b=10.5;
    a=(int)b;//编译通过a=10

    int a=10;
    boolean b=true;
    b=(boolean)a;//报错,不兼容
    强制类型转换可能会造成数据的精度的丢失,强制转换不一定能成功,互不相干的类型就不可以。
    10.数值提升:
    (1)不同类型的数据混合运算,范围小的会提升成范围大的。
    (2)对于short,byte这种比四个字节小的类型,会先提升成四个字节的int,在运算
    如:byte a=10;
    byte b=20;
    byte c=a+b;//不兼容,报错
    应改为:byte c=(byte)(a+b);
    或者 int c =a+b;

    cs