2.3 变量

2.3.1概念

①内存中的一个存储区域
②该区域的数据可以在同一类型范围内不断变化
③变量是程序中最基本的存储单元,包含变量类型,变量名和存储的值

2.3.2变量的意义

用于在内存中保存数据

2.3.3变量的使用

/*
变量的使用
1.java定义变量的格式:数据类型 变量名=变量值;
2.说明:
①变量必须先声明后使用
②变量都定义在其作用域内,在作用域内,它是有效的,换句话说,出了作用域,就失效了。
③同一个作用域内不可以声明两个同名的变量


*/

class VariableTest{
    public static void main(String[] args){
        //变量的定义
        int myAge=12;
        //变量的使用
        System.out.println(myAge);
        //变量的声明
        int myNumber;
        //变量的赋值
        myNumber = 1001;
    }

}

    public void method(){
        int myClass=0;

    }

2.3.4数据类型说明

/*
Java定义的数据类型

一、变量按照数据类型来分:

    基本数据类型:
    整型:byte\ short\ int \long
    浮点型:float\double
    字符型:char
    布尔型:boolean

    引用数据类型:
    类:(class)
    接口:(interface)
    数组:(array)

二、变量在类中声明的位置
        成员变量  VS  局部变量
*/
class VariableTest1{
    public static void main(String[] args){
        //1.整型:byte(1字节=8bit)short(2字节)\int(4字节)\long(8字节)
        //①byte范围:-128~127
        byte b1=12;
        byte b2=-128;
        //b2=129;编译不通过
        //②long型变量必须以小写l或大写L结尾
        //③常用int
        short s1=128;
        int i1=1234;
        long l1=34124L;//加L
        //2.浮点型 
        //float(单精度,四个字节)
        //double(双精度,8字节)
        //①浮点型:表示带小数点的数值
        //②float表示数值的范围比long还大

        double d1 = 123.3;
        System.out.println(d1+1);
        //③定义float变量时,末尾要以f或F结尾
        float f1 = 12.3F;
        System.out.println(f1);
        //④通常使用double

        //3.字符型:char(1字符=2字节)
        //①定义char型变量,通常用一对'',内部只能写一个字符
        char c1 ='a';
        System.out.println(c1);
        //②表示方式:1.声明一个字符2.转义字3.直接用Unicode值来表示字符型常量
        char c5 = '\n';//换行符
        c5='\t';//制表符
        System.out.print("hello"+c5);
        System.out.println("world");

        char c6 = '\u0123';
        System.out.println(c6);
        //4.布尔型:boolean
        //① 只能取两个值之一:True False
        //②常常在条件判断,循环结构中使用
        boolean bb1 = true;
        System.out.println(bb1);

        boolean isMarried = true;
        if(isMarried){
            System.out.println("你不能参加单身party了");
        }
        else{
            System.out.println("你可以参加");
        }

    }

}

2.3.5 基本数据类型之间的运算规则

/*
基本数据类型之间的运算规则:

前提:这里讨论的只是7种数据类型变量间的运算,不包含boolean类型的。


1.自动类型提升:
    结论:当容量小的数据类型的变量与容量大的数据类型做运算时,结果自动提升为容量大的数据类型
    byte --> short --> int --> long --> float --> double
    特别的,当byte,char,short三种类型的变量做运算时,结果为int类型

2.强制类型转换:见VariableTest3.java



说明:此时的容量大小指的是,表示数的范围的大和小,比如:float容量要大于long的容量
*/
class VariableTest2 {

    public static void main(String[] args) {

        byte b1=2;
        int i1=129;
        int b2=b1 + i1;

        System.out.println(b2);



    }
}

2.4不同进制的表示方式

二进制首位为符号位,0则该数为正数,1则该数为负数
负数源码:符号位为1,其他正常
反码:除符号位外,各个位取反
补码:反码+1
十进制-->二进制:除2取余的逆 逆(反过来看)
二进制-->八进制 由低往高三个一位
二进制-->十六进制 四个一位

/*
计算机中不同进制的使用说明

对于整数,有四种表示方式:
二进制(binary):0,1,满2进1,以0b或0B开头
十进制(decimal):0-9,满十进一
八进制(octal):0-7,满8进1,以数字0开头表示
十六进制(hex):0-9及A-F,满16进1,以0x或0X开头表示,此处的A-F不区分大小写






*/





class BinaryTest {
    public static void main(String[] args) {

        int num1 = 0b110;
        int num2 = 110;
        int num3 = 0127;
        int num4 = 0x110A;

        System.out.println("num1 = " +num1);
        System.out.println("num2 = " +num2);
        System.out.println("num3 = " +num3);
        System.out.println("num4 = " +num4);


    }
}

2