Java语言基础

关键字

  • 关键字概述
    • 被Java语言赋予特定含义的单词
  • 关键字特点
    • 组成关键字的字母全部小写
  • 关键字注意事项

    • goto和const作为保留字存在,目前并不使用 类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观

    Java语言基础_第1张图片

    Java语言基础_第2张图片

标识符

  • 标识符概述
    • 就是给类,接口,方法,变量等起名字时使用的字符序列
  • 组成规则
    • 英文大小写字母
    • 数字字符
    • $和_
  • 注意事项
    • 不能以数字开头
    • 不能是Java中的关键字
    • 区分大小写

常见命名规则

  • 常见的命名规则:见名知意

    包:其实就是文件夹,用于把相同的类名进行区分
        全部小写
    
        单级:liuyi
        多级:cn.itcast
    
    类或者接口:
        一个单词:单词的首字母必须大写
            举例:Student,Dog
        多个单词:每个单词的首字母必须大写
            举例:HelloWorld,StudentName
    
    方法或者变量:
        一个单词:单词的首字母小写
            举例:main,age
        多个单词:从第二个单词开始,每个单词的首字母大写
            举例:studentAge,showAllNames()
    
    常量:
        一个单词:全部大写
            举例:PI
        多个单词:每个字母都大写,用_隔开
            举例:STUDENT_MAX_AGE
    

注释

  • 注释概述
  • 用于解释说明程序的文字
  • Java中注释分类格式
    • 单行注释
      • 格式: //注释文字
    • 多行注释
      • 格式: /* 注释文字 */
    • 文档注释
      • 格式:/* 注释文字 /

常量

  • 常量概述
    • 在程序执行的过程中其值不可以发生改变
  • Java中常量分类
    • 字面值常量
    • 自定义常量(面向对象部分讲)
  • 字符串常量
    • 用双引号括起来的内容
  • 整数常量
    • 所有整数
    • 12,23
  • 小数常量
    • 所有小数
    • 12.34,56.78
  • 字符常量
    • 用单引号括起来的内容
    • ‘a’,’A’,’0’
  • 布尔常量
    • 较为特有,只有true和false
  • 空常量
    • null(数组部分讲解)

进制

有符号数

  • 计算机中数据的运算都是补码进行的

变量

  • 变量概述
    • 在程序执行的过程中,在某个范围内其值可以发生改变的量
    • 理解:如同数学中的未知数
  • 变量定义格式
    • 数据类型 变量名 = 初始化值;
    • 注意:格式是固定的,记住格式,以不变应万变

使用变量注意事项

  • 作用域
    • 变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
  • 初始化值
    • 没有初始化值不能直接使用
  • 在一行上建议只定义一个变量
    • 可以定义多个,但是不建议

数据类型

Java语言基础_第3张图片

Java语言基础_第4张图片


- 长整型后缀用L或者l标记。建议使用L。 long a = 1000000000000L;
- 单精度浮点数用F或者f标记。建议使用F。float f = 123.456F;
- byte,short,char相互之间不转换,他们参与运算首先转换为int类型
- 常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。

面试题

/* 面试题1: byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么呢? b = b1 + b2;是有问题的。 因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。 常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。 */
class DataTypeDemo6 {
    public static void main(String[] args) {
        //定义了三个byte类型的变量,b1,b2,b3
        //b1的值是3,b2的值是4,b没有值
        byte b1 = 3,b2 = 4,b;

        //b = b1 + b2; //这个是类型提升,所有有问题

        b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
    }
}
/* 面试题2: byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢? 练习:byte b = (byte)300; */
class DataTypeDemo7 {
    public static void main(String[] args) {
        //因为byte的范围是:-128到127。
        //而130不在此范围内,所以报错。
        //byte b = 130; 

        //我们可以使用强制类型转换
        byte b = (byte) 130;

        //结果是多少呢?
        System.out.println(b);
    }
}
/* 分析过程: 我们要想知道结果是什么,就应该知道是如何进行计算的。 而我们又知道计算机中数据的运算都是补码进行的。 而要得到补码,首先要计算出数据的二进制。 A:获取130这个数据的二进制。 00000000 00000000 00000000 10000010 这是130的原码,也是反码,还是补码。 B:做截取操作,截成byte类型的了。 10000010 这个结果是补码。 C:已知补码求原码。 符号位 数值位 补码: 1 0000010 反码: 1 0000001 原码: 1 1111110 */

关键问题补充

float在内存中的存储

  • float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:

    一个浮点数有2部分组成:底数m和指数e

底数部分 使用二进制数来表示此浮点数的实际值
指数部分 占用8bit的二进制数,可表示数值范围为0-255

但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128

底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。

    格式:
        SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
        S表示浮点数正负    
        E指数加上127后的值得二进制数据
        M底数

    举例:
        17.625在内存中的存储

        首先要把17.625换算成二进制:10001.101

            整数部分,除以2,直到商为0,余数反转。
            小数部分,乘以2,直到乘位0,进位顺序取。

        在将10001.101右移,直到小数点前只剩1位:
            1.0001101 * 2^4 因为右移动了四位

        这个时候,我们的底数和指数就出来了
        底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
        指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
        符号部分是整数,所以是0
        综上所述,17.625在内存中的存储格式是:
        01000001 10001101 00000000 00000000 

数据类型转换之默认转换

  • byte,short,char – int – long – float – double
    为什么long的字节比float的字节大,反而默认转换的时候却将龙转为float

    long: 8个字节
    float:4个字节

    A:它们底层的存储结构不同。
    B:float表示的数据范围比long的范围要大
    long:2^63-1
    float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1

char可以存储汉字

  • Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

       可以。因为java语言中的字符占用两个字节。
    

你可能感兴趣的:(java,语言)