JavaSE个人复习(基本数据类型、运算符[一部分])-2018/12/12

java环境变量的配置:

          JDK:JAVA_HOME=JDK的安装路径、PATH=%JAVA_HOME%\bin

java程序的执行流程

          java首先需要利用文本编辑器编写java源程序,源文件的后缀为.java,再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀为.class,最后利用虚拟机解释运行

JavaSE个人复习(基本数据类型、运算符[一部分])-2018/12/12

进制问题:

二进制:0-1,满2进1,在程序中以0b/0B开头

八进制:0-7,满8进1,在程序中以0开头

十进制:0-9满10 进1

十六进制:0-9,A-F,满16进1,在程序中以0X/0x开头

进制的转换:十进制转换为二进制:不断地除以2,余数倒排

                              JavaSE个人复习(基本数据类型、运算符[一部分])-2018/12/12

二进制转换为十进制:JavaSE个人复习(基本数据类型、运算符[一部分])-2018/12/12

十进制转换为其他进制:向哪个进制转化就不断除以几,并将余数倒排

其他进制转换为十进制:从这个进制的最低位开始,然后按位次乘以当前进制的位次次幂,求和

 

每一个二进制数字成为1位,bit(b)

字节--Byte--B 1B = 8b

千字节 - KB 1KB =2^10B

兆字节 - MB -> GB -> TB -> PB

8Mb = 1MB

 

基本数据类型:

数值型:

             整数型:byte --字节型-- 一个字节  -2^7~2^7-1      -128~127

                            short ---短整型--2个字节 - 2^15~2^15-1   -32768~32767

                            int --整型--4个字节   -2^31~2^31-1  正负21亿

                            long--长整型----8个字节  -2^63~2^63-1需要以L/l结尾

             浮点型:float 单精度 - 4个字节   需要以f结尾  -10^38~10^38

                           double 双精度 - 8个字节  java中的浮点型默认为double    -10^308~10^308

              字符型 :char  - 2个字节  0~65535 存储用的utf-8   一个字符能存储下一个中文汉字

              布尔型 :

                            boolean - 八分之一个字节  默认值为false

 

基本数据类型对应的包装类型及默认值

            short   Short   (short)0

              int      Integer   0

           long      Long    0L

            char   Character   \u0000

           double   Double   0.0d

           float       Float      0.0f

           boolean  Boolean false  

 

public class DefaultValueTest {
    static int intA;
    static boolean blnA;
    public static void main(String[] args) {
        int intB;
        boolean blnB;
        System.out.println(intA); //输出0
        System.out.println(blnA); //输出false

        //System.out.println(intB); //编译不通过
        //System.out.println(blnB); //编译不通过
    }
}

注意点:  基本数据类型的默认值只有在类中的时候才可以使用,在方法中需要对基本数据类型赋值之后才能使用,否则编译不通过

小技巧: 在程序中如果某些数据可能返回空值,那么最好使用包装类,否则在转换的时候可能出现异常,null无法转化为基本数据类型,而引用类型可以为null,虽然会牺牲一些转换效率,但可以避免持久化数据时产生的一些异常

 

引用数据类型(reference Type):指向一个对象,不是原值,指向对象的变量称为引用变量

       数组[]  类   class  接口

   数据类型的转换

    自动类型转换/隐式转换

        byte b = 125

         int i = b

       规律一:小的类型自动转换为大的类型

       规律二:整型类型可以自动转化为浮点类型,可能会产生舍入误差

       规律三:字符型可以自动提升为整数

              char c = 'a'  

              int i = c

                           JavaSE个人复习(基本数据类型、运算符[一部分])-2018/12/12

     强制类型转换/显式转换

          int i = 134;

          byte b = (byte)i

       规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一些想不到数据

       规律二:小数在转化为整数的时候是舍弃小数位

 

基本数据类型和引用类型的对比

                               基本数据类型                                                引用数据类型
                               在栈中进行分配                                在堆中进行分配,堆的读写速度远远不如栈           
                         变量名指向具体的数值                  变量名执行存数据对象的内存地址,即变量名指向hash值
     变量在声明之后java就会立刻为它分配内存空间                  变量声明的时候不会分配内存,只是存储了一个内存地址
         基本类型之间的赋值都是创建新的拷贝                                对象之间的赋值都是引用的传递
                       “==”和“!=”是在比较值           "=="和"!="之间是在比较引用地址,需要自己实现equals()方法
               基本数据类型变量的创建和销毁很快                                  对象的销毁需要JVM去做,垃圾回收机制(GC)

运算符

 +-*/% ++ --

    注意:

              1、byte short char在运算的时候自动提升为Int

              2、整型在运算的时候保存类型不变

              3、小类型和大类型运算,结果一定是大类型

              4、任意整数/0  --  ArithmeticException - 算术异常

                    任意非零数字/0.0   任意非零小数/0  - infinity  无穷大

                    0/0.0  0.0/0.0   0.0/0  NaN Not a Number 非数字

 

 

;