课程目标:

1. 了解关键字的概念及特点.了解保留字
2. 熟练掌握标识符的含义,特点,可使用字符,及注意事项
3. 了解常量的概念,进制,进制之间相互转换,了解有符号标识法的运算方式
4. 掌握变量的概念及定义过程
5. 掌握java中的数据类型及注意事项
6. 掌握强制类型转换的格式

一、关键字

1、概念:
    被java语言赋予特定含义的单词
2、特点:
    所有的字母都是小写的,在一些高级开发工具中,会有特殊颜色显示
3、保留字:
    目前版本中还不是关键字,但是有可能在后续版本中升级为关键字goto  const
4、注意事项:
    在一些资料中,可能会把关键字称为保留字

二、标识符

1. 概念:给类、接口、方法、变量起名字的字符序列
2. 组成规则:英文字母的大小写
    数字
    ¥、_
3. 注意事项:
不能以数字开头
    不能是java中的关键字(包括保留字)
    严格区分大小写(hello != Hello)

上述为强制要求,否则编译不通过


4. 注意点:见名知意
5. 约定俗称的命名规则:
    a.类和接口:大驼峰命名法
        首字母大写,多个单词,每个单词的首字母都大写
        eg:HelloWorld,StudentManagementSystem
    b.方法和变量:小驼峰命名法
        首字母小写,多个单词,每个单词的首字母都大写
        eg:main,sayHello
    c.包:本质是文件夹(方便管理,解决同名文件)
        域名反转,用 . 隔开
    d.常量:java程序运行的过程中,值保持不变的量
         所有的字母都大写,多个单词用 _ 隔开

三、常量

1. 概念:在程序中运行的过程中其值保持不变的量
2. 分类:
    a.字面值常量:
            字符串常量-用双引号括起来的内容
            整数常量-所有的整数
            小数常量-所有的小数
            字符常量-用单引号括起来的内容,只能有一个字符(字母、数字、符号、中文)
            布尔常量-true、false
            空常量-null
    b.自定义常量:
            final 修饰的变量

3. print 和 println的区别
    print打印完内容不换行
    println打印完内容自动换行

四、进制:

1. 逢几进一:计算机中的都是二进制
2. 常用的进制有四种:
    二进制:        0,1            0b        0,1,10,11,100.....
    八进制:        0-7            0        0,1,....7,10,.....17,20...27,30...77,100....
    十进制:        0-9            默认    0,1....9,10...
    十六进制:        0-9,a-f        0x        0,1...9,a,b,c,d,e,f,10.......
3. 二进制之间的相互转换:
    其他进制转成10进制:
        1234 = 1000+200+30+4
             = 1*10^3 + 2*10^2 + 3*10^1 + *4 *10^0
        结论:每一位上的数乘以对应进制的位数减一次方,做累加
    0b10100 –> 10进制
        0b10100 = 1 *2^4 + 0* 2^3 + 1 *2^2 + 0*2^1 + 0*2^0
                = 16 + 0 + 4 + 0 + 0 + 0
                = 20
    0137 –> 10进制
        0137 = 1 * 8^2 + 3 * 8^1 + 7 *8^0
             = 95
    0x13d -> 10进制
        0x123d = 1*16^2 + 3*16^1 + 13*16^0
               = 256+61
               = 317

4. 十进制之间的相互转换:
    结论:转成几进制就处以几,直到商为0,把余数反转

    76 ->2 进制
    76/2------0
    38/2------0
    19/2------0
    9/2------1

4/2——1
2/2——0
1/2——1
二进制:1001100
转八进制:
76/8—–0
9/8——4
1/8——1
——1

5. 快速转换法:
a. 8421码:

用于2进制和10进制之间的相互转换
8位二进制,每一位都是1,代表的数是几
0b 1111 1111
->
128 64 32 16 8 4 2 1

0b10011001

-> 10进制
128+16+8+1 = 153

    0b11101100
    -> 10进制
    =128+64+32+12=236

b. 十进制转二进制,和码表逐位相减,能减是1,不能减是0

93 = 0b0101 1101

c. 二进制和八进制,十六进制之间的转换
    三位二进制        000-111
    一位八进制        0-7
    二进制和八进制相互转换:
        二转八:三位二进制转换成一位的八进制
        八转二:把一位的八进制拆成三位的二进制
    0b10101010101110
    ->
    0b010 101 010 101 110 = 025256        
    0b1 110 101 011 110 = 016536

    07764 = 0b 111111110100

0752=0b111101010
d. 二进制和十六进制相互转换
0000-1111 0-15
0-f 0-15

二转十六:把四位的进制转成一位的十六进制
十六转二:把一位的十六进制拆成四位的二进制

0b11 1010 1011 1111 0101 = 0x3abf5
0b1 0101 1110 1011 = 0x15db

0x7ade

->2进制
0b0111 1010 1101 1110
e. x进制和y进制相互转换
六进制转七进制:
中间只用十进制作为桥梁

五、有符号标识法

7: 0000 0111
为了解决负数在计算机中的存储,出现:原码,反码,补码

原码:
用最高位代表符号,其他位代表数值,正数的符号位是0,负数的符号位是1
都使用八位的二进制来表示
-7:1000 0111

反码: 
正数的反码和原码相同,负数的反码,符号位不变,其他位取反
7的反码: 0 000 0111
-7的反码:1 111 1000

补码:
正数的补码和原码相同,负数的补码,在反码的基础上,末位加1
        7的补码: 0 000 0111
        -7的补码:1 111 1001

计算机中最终存储的都是二进制的补码

六、变量

1. 概念:

在java程序运行的过程中,其值可以在一定范围内发生变化的量

2. 定义格式:
    数据类型  变量名 = 初始化值;
    数据类型:    整数:  int
                字符串:String
    变量名:小驼峰
    初始值:变量的初始化值
3. 变量的声明格式:    
    数据类型  变量名;
    int max;

4. 注意事项:
    1. 定义在方法中的变量叫做局部变量,局部变量不赋初值不能使用
2. 变量所在的大括号叫做变量的作用域,同一个作用域中不能定义多个名字相同的变量,但是可以重新赋值
    3. 同一行可以定义多个变量,但是不建议这么使用,可读性查

七、数据类型

1. 分类和范围:
a. 基本数据类型
        四类八种
            整数:
                byte、short、int、long
            小数:
                float、double
            字符:
                char
            布尔:
                boolean

b. 引用数据类型:
类、接口、数组、String…
除了基本数据类型以外的所有类型

基本数据类型的范围
类型        字节        位数      默认值              范围
byte         1         8         0            -128~127            -2^7 ---2^7-1
short        2         16        0            -32768~32767        -2^15---2^15-1
int          4         32        0            -2147483648~2147483647    
long         8         64        0            -9223372036854775808~9223372036854775807
float        4         32        0.0            -3.4E38~3.4028235E38
double       8         64        0.0            -1.79E-308~1.7976931348623157E308
char         2         16        \u0000        0~65535
boolean      1          8        false        true或false



        bit: 一个二进制位   0,1
        byte(字节):  8个二进制位  2^8  = 256
        1kb = 1024byte
        1mb = 1024kb
        1gb = 1024mb
        1tb = 1024gb
        1pb = 1024tb
        1eb = 1024pb
        1zb = 1024eb
        1yb = 1024zb

2. 注意事项:
    a. 整数的默认类型是int ,小数的默认类型是double
    b. 定义float类型的小数,需要在小数的后面加一个F(f)
    c. 定义byte,short类型的整数时, 如果等号右边的数值在左边类型的范围之内,则可以直接赋值
    d. 定义long类型的变量时,如果等号右边的值在int的范围之内,则可以直接赋值.如果超出了int的范围
        需要在数的末尾加 L,推荐使用大写
3. 默认值
    a. 定义在类中方法外的变量才有默认值,局部变量是没有默认值的,静态的方法中只能调用外部静态的变量
4. 运算规则

    a. byte,short,char 不能直接做运算,做运算的时候需要转成int
    b. 定义byte,short,类型的变量的时候, 如果等号右边都是常量,看其结果是否在左边类型的范围之内,在就可以直接赋值
       如果等号右边存在变量,按照上面的规则进行运算,如果结果类型比左边的范围大,则不能直接赋值

5. 默认转换
    a. 可以把一个long类型的值赋值给float类型的变量,因为float的最大值远大于long的最大值
            float f = 123L; 正确的
            float f1= 123;  正确的
            float f2 = 123.1; 错误的,加 f

            byte,short,char ->int ->long - >float -> double

    b. 通过程序演示,发现可以把一个8字节的long类型数值赋值给4个字节的float类型变量:
        float 3.4*10 ^38
        long:  2^63 -1

    3.4*10^38 > 3.4*8^38 = 3.4*(2^3)^38  =  3.4*2^114     2^63
    通过最大值的比较,得出结论, float的最大值远大于long的最大值
    所以我们可以把long赋值给float类型的变量    

6.char类型
        a. char类型的变量直接使用的时候,使用的是他所代表的符号,参与运算的时候,用的是他在码表中的编号
        b.    char 占两个字节(0-65535),用的是Unicode
            utf-8:表示英文和数字用1一个字节,
gbk:表示英文和数字用一个字节,中文用两个字节
char:类型直接打印,用的是她所代表的字符,参与运算,用的是底层的编码
定义char类型:
    char ch = ‘a’;

                System.out.println('z' + 0);//122

                char ch2 = 97;
                System.out.println(ch2);//a


7.加法运算
        a. 字符串和任意类型做加法运算,得到的都是字符串,做拼接
        b. 运算的顺序是从左往右,右括号先算括号里的
        c. 布尔类型不能和其他基本数据类型做运算
        d. +的用法:
            正号
            加法运算
            字符串的连接

###八. 强制类型转换

1. 强制类型转换的格式:
目标类型  变量名  = (目标类型) 要转的值(常量或变量);

a. 基本数据类型:  

除了boolean 类型以外,其他7中类型都可以 互相转换
一般是在把大类型转成小类型的时候用强转

b. 引用数据类型:

  必须具备子父类的关系        向下转型

本文原创–支持原创

联系我--strivedeer@163.com