一、Java的关键字和标识符

一、Java的关键字和标识符

关键字

1、定义:

​ 在Java程序中,已经定义好的被预先使用的一些特殊的单词称为关键字 ,一共有50个关键字 (48+2个保留字) ,关键字都是小写的英文单词

2、关键字的分类

2.1 数据类型关键字

​ byte :字节类型

​ short : 短整型

​ int : 整型

​ long: 长整型

​ float :单精度浮点型

​ double:双精度浮点型

​ char: 字符型

​ boolean : 布尔类型

​ void :空类型

​ null :空对象

​2.2 流程控制关键字

​ if: 条件分支判断

​ else:条件分支

​ switch: 条件分支判断

​ case : 条件分支其中一种情况

​ default : 默认

​ break: 退出条件 或 循环

​ continue : 退出当前循环,继续下一次循环

​ for : 循环

​ do: 循环

​ while : 循环

​ return:方法的返回

​ 2.3 面向对象关键字

​ class:定义类

​ interface : 定义接口

​ extends:继承一个类

​ implements: 实现一个接口

​ super : 超级 (用于调用父类的成员)

​ this: 当前类

​ instanceof : 判断一个类的类型

​ import : 导入一个类

​ package : 定义一个类所在的包

​ new : 创建对象

​ 2.4 修饰符关键字

​ abstract :修饰抽象类 、抽象方法

​ final : 修饰常量

​ native: 本地的 ,也用于修饰变量

​ private :私有的

​ protected : 受保护的

​ public : 公共的

​ static :静态的

​ synchronized :修饰方法或代码块,用于线程安全的

​ transient :瞬时状态

​ volatile :瞬时状态

​ 2.5 异常关键字

​ try:试一试

​ catch: 捕获异常

​ finally: 最后执行的代码块 ( 多出的一个)

​ throws :定义需要抛出的异常

​ throw:抛出异常

​ 2.6 其他关键字

​ assert :测试中的断言

​ strictfp : 其他

​ enum:定义枚举

​ 2.7 保留字

​ const 、goto

标识符

1、定义

​ 在Java程序中,所有由程序员自己命名的元素统称为“标识符”

2、标识符命名规则

  • ​ 标识符由数字、字母、下划线和$组成

  • ​ 标识符不能以数字开头

  • ​ 标识符区分大小写

  • ​ 标识符不能是关键字

​ 注意事项:

​ 定义类名的标识符 :首字母必须大写 ,后面的单词的首字母大写,准寻 大驼峰命名法 (例如 XxxXxx ,UserInfo ,Student)

​ 定义方法 标识符: 首字母尽量小写 ,后面的单词首字母大写,准寻 小驼峰命名法(例如 xxxXxxx , getUserName() )

​ 定义变量标识符: 单词全部小写 ( username)

​ 定义包名: 按模板分层级, 使用公司的域名 倒写,(例如 com.softeem.xxx 、com.j2008.xxx)

​ 定义项目名: 尽量使用英文 (Java项目 可以使用中文,JavaWeb项目一定使用英文)

标识符是否符合标识符是否符合
_$abcok$usernameok
AbcokUSERNAMEok
thisno#stuno
1usernamenoNULLok
nullnon1ok

二、Java的常量和变量

常量

1、定义

​ 在Java中,固定不变的数据量称为常量,常量也有内存,常量存放在被称为“常量池”的内存中

​ 面试题: 常量池的内存有哪些? (存放常量的内存有哪些 )

2、常量的分类

常量类型含义示例
整数常量所有的整数1,100,500 ,-20
小数常量所有的小数1.5,-3,4 ,3.1415926…
字符常量由单引号引起来,只能写一个字符,不能为’’‘a’ ,‘2’ ,’ ’
字符串常量由双引号引起来,可以写多个字符,可以为“”“hello” “\n” “\t”
布尔常量用于条件判断的 , 只有2个常量true 、false
空常量用于表示空对象null

​ 常量的修饰符 : final

  final  int  n = 100// 定义常量的语法 ,n的值只能为 100,不能再次改变 ,其中n就是常量

变量

1、定义

​ 在Java中用于保存一个数据的最小内存单元 称为 “变量” ,变量中每次只能存放一个值 ,变量的数值是可以被改变的 。

​ 在定义变量时,需要明确三要素: 数据类型 、 变量名(标识符)、变量值

2、变量语法:

​ 数据类型 变量名 = 初始值;

或者 数据类型 变量名1 ,变量名2 ;

// 定义一个变量 变量名是n ,数据类型是int ,初始值为100  
int  n = 100// 将原有变量名n中的值变更为 110  
n=110;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1U6Ik8lG-1600836054972)(assets/1600655853306.png)]

变量在赋值时,值必须满足与数据类型匹配,如果不匹配可能出现异常 或丢失精度

3、变量的分类 :

全局变量(global variables)

​ 在Java的类结构中,定义在类中,方法外面的变量, 它的作用范围: 整个类的方法中

public class Test1 {
    //定义全局变量 :定义在类里面,方法的外面
    int n = 100;

    //定义方法
    public void m(){
        // 输出一句话  "" 表示输出的内容    + 表示连接两个字符串
        System.out.println("n:"+n);
    }
    
    //定义方法
    public void s(){
        System.out.println("n:>>>"+n);
    }
}
局部变量(local varibable)

​ 一般声明在方法或代码块(条件语句块,循环语句块,静态语句块等) 中,它的作用范围只能在声明的区域中使用

 // 定义run方法
    public void run(){
        // 局部变量   只能在声明所在的方法中使用
        int  n=200;
        int  i =1;
        // 当类总存在局部变量和 全局变量同名时, 变量的使用遵循“就近原则”
        System.out.println("局部变量n:"+ n);   // 200
    }

    // 定义eat方法
    public void eat(){
       // System.out.println("i---"+i);
    }

调用方法的语法

 public static void  main(String [] args){
        // 如何调用 这个类的方法呢?  需要创建对象
        // 创建对象的语法:  类名 对象名 =  new  类名();
        //调用对象的方法语法:   对象名.方法名();
        Test1 obj = new Test1();
        obj.m();
        obj.s();
        obj.run();
        obj.eat();
    }

三、Java的数据类型

​ Java是一门强类型的编程语言,它不同于一些弱类型的语言(JavaScript ,php,python),Java在声明变量时必须显示的定义变量的数据类型,变量的类型一旦定义,则不能改变 。Java中数据类型分为两大类

1、基本数据类型 : 包括 整数,浮点,字符,布尔类型等

2、引用数据类型 :包括 类,数组,集合,接口等

1、基本数据类型

  • 整数型 ,默认值为0
数据类型关键字字节长度数值范围
字节型byte1个字节=8位-128~127
短整型short2个字节=16位-32768~32767
整型int(默认)4个字节=32位-2的31次方 ~2的31次方-1
长整型long8个字节=63位-2的63次方~2的63次方-1
  • 浮点型,默认值为0.0

    数据类型关键字字节长度范围
    单精度float4个字节1.4013E-45~3.4028E+38
    双精度double8个字节4.9E-324~1.7977E+308
  • 字符型 默认值 ‘ ’

    数据类型关键字字节长度范围
    字符型char2个字节0~65535

    一个字符能存放一个中文汉字

  • 布尔型 默认值 false

    数据类型关键字字节长度范围
    布尔类型boolean1个字节true、false

    注意:

           // 对于两个double类型/float类型的数计算, 由于计算机在计算式会缺失精度,计算的结果
            //不是预期的0.3,建议对于浮点数计算式,使用java.math.BigDecimal引用数据类型计算 
            double d1 =0.1;
            double d2 = 0.2;
            //结果 0.30000000000000004  
            double d3 = d1 + d2;
            System.out.println(d3);
    
            float f1 =0.2f;
            float f2 = 0.3f;
            float f3 = f1-f2;
    		// 结果  -0.1000000000001
            System.out.println(f3);
    

    对于字符类型中 "\ " 表示转移字符,不会占用内存

    \n :换行

    \t : 一个制表符tab

    \b: 表示退格

    \r: 表示enter

    2、引用数据类型

    在Java中除了8个基本数据类型以外的数据类型,都是引用数据类型 ,常用的引用数据类型 包括 类、数组、 接口,String 等

    以类 举例

    创建一个学生类 ,在一个类中会包含一些 变量(全局变量),还包含一些方法

    定义一个学生类,这个类就是引用数据类型

    public class Student{
            // 定义的一个字符串变量  
           String stuname="张三";
           char  sex= '男';
           int age = 20// 定义一个方法 
           public void showInfo(){
               System.out.println(stuname);
               System.out.println(sex);
               System.out.println(age);
               
           }
        
    }
    

    ​ 如何使用这个学生类型(引用数据类型)

    public static void main(String [] args){
         // 定义学生类型  ,引用数据类型需要创建 引用的对象 
         // 引用数据类型   变量名  =   null 
        //  基本数据类型   变量名  = 初始值
        // 对于类的创建
        // 类名   对象名  =  new  类名(); 
        Student stu = new Student();
        // 对象名.方法名();
        stu.showInfo();
        
    }
    

引用数据类型与基本数据类型的区别?

1、创建方式不同 ,基本数据类直接通过定义变量的方式创建, 而引用数据类型需要new一个对象

​ 2、在JVM的内存分配不同, 基本数据类型的内存在栈内存中直接创建 , 而引用数据类型是在栈内存中定义引用的地址,实际的内存分布在堆内存中

​ 3、引用数据类型 可以调用它的方法, 而基本数据类型没有方法

​ 引用数据类型的内存分布图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTjH6rB1-1600836054973)(assets/1600676108899.png)]

​ 基本数据类型的分布:

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vwahZBVV-1600836054974)(assets/1600676345002.png)]

四、Java的数据类型的转换

为什么需要进行数据类型转换

​ 在Java中数据进行计算时 ,必须要求计算的元素的数据类型一致,如果数据类型不一致需要进行转换

数据转换分类

1、自动类型转换

​ 转换规则: 范围小的类型向范围大的类型转换(从小到大转换)

​ byte -> short -> int-> long -> float -> double 其中boolean类型不参与转换

​ char ->int

​ 转换原理: 类型向上提升

2、强制类型转换

  • ​ 整数之间的强转
         // int 类型
          int i=1;
         // byte 类型
         byte  j=100;
         // 由于i和j 不同类型,不能直接计算,程序会自动将j的类型向上提升为 int
         // 所以i +j 之后依然是  int 类型
         // 此时 int 的内存 大于  byte 的内存,会出现数据溢出的情况 ,JVM不允许
         // byte s = i + j ;   // 等号两遍类型不匹配
         int y = i + j ;
         System.out.println(y);

         // 如果一定要使用byte赋值,还有一种办法,就是将两遍类型一致
         byte s  = (byte)(i + j) ;   // 两个数在相加时 会先自动提升为int 然后再相加

  • 整数与小数之间的强转
  // 整数和小数之前 也会丢失精度
        int n2 = 100;
        double n3 = 3.5;
        int n4 = (int)(n2 + n3);
        // 相加时先提升为 double ,然后相加后得到 double
        // double是8个字节 不能放在4个字节的长度中,
        // (这里好比double 为一桶水, int为一杯水,相当于将一桶水往一杯水中放)
        // 只能留住一本水的内容,所以  这里 如果强转成int 则小数会丢失,
        System.out.println(n4);
  • 小数和小数之间的强转
   // float  与 double 类型
        float f1 = 3.14f;
        double d2 = 3.5;
        double dd =  f1+d2;
        float  ff =  (float)(f1 + d2);

  • 丢失精度的情况
      // 强转时会丢失精度
        byte n=100;
        int  m = 30;
        byte mm = (byte)( n + m); // 因为最大值为127  再往后就是从最小值开始-128
        System.out.println(mm);

        // 整数和小数之间 也会丢失精度
        int n2 = 100;
        double n3 = 3.5;
        int n4 = (int)(n2 + n3);

五、Java的字符ASCII码表

字符int值
a97
A65
048
依次小写字母往后都是数字 ,例如 b为98,c为99…
A:65 B:66 C:67 0:48 1:49 2:50…

字符与数值的转换

// int 与 char类型的转换
        // 每一个char类型都有一个字符编码 这个编码参照 ASICC码表
        char c='a';
        // 自动提升 : 因为 char类型占2个字节, int占4个字节,自动char向上提升
        int n = c;
        System.out.println(n);
        // 先相加 再转换
        char c2 = (char)(n+2);  // 需要强转
        // 字符+字符  直接相加
        char c3 = 'a'+'b';
        System.out.println((int)c3);

| 依次小写字母往后都是数字 ,例如 b为98,c为99… | |
| A:65 B:66 C:67 0:48 1:49 2:50… | |

字符与数值的转换

// int 与 char类型的转换
        // 每一个char类型都有一个字符编码 这个编码参照 ASICC码表
        char c='a';
        // 自动提升 : 因为 char类型占2个字节, int占4个字节,自动char向上提升
        int n = c;
        System.out.println(n);
        // 先相加 再转换
        char c2 = (char)(n+2);  // 需要强转
        // 字符+字符  直接相加
        char c3 = 'a'+'b';
        System.out.println((int)c3);

2020.9.21

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值