②Java基本语法

Java基础语法


前言

记录Java学习过程中对Java基础语法的学习


一、关键字和保留字

1.1 关键字

  • 关键字(keyword)的定义和特点
    • 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
    • 特点:关键字中所有的字母都为小写
    • 官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
      在这里插入图片描述
      在这里插入图片描述

1.2 保留字

  • Java保留字:
    现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字;goto 、const。

二、标识符

2.1 标识符

  • Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
  • 技巧:凡是自己可以起名字的地方都叫标识符。

2.2 定义合法标志符规则

  • 由26个英文字母大小写,0-9 ,_或 $ 组成。
  • 数字不可以开头。
  • 不可以使用关键字和保留字,但能包含关键字和保留字。
  • Java中严格区分大小写,长度无限制。
  • 标识符不能包含空格。

2.3 Java中名称命名规范

  • 包名:多单词组成时所有字母都小写:xxxyyyzzz。
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz。
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二单词开始每个单词首字母大写:xxxYyyZzz。
  • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ。
  • 注意:
    • 在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
    • java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

三、变量

3.1 变量的概念

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

3.2 变量的作用

  • 用于在内存中保存数据。

3.3 使用变量注意事项

  • Java中每个变量必须先声明,后使用。
  • 使用变量名来访问这块区域的数据。
  • 变量的作用域:其定义所在的一对{ }内。
  • 变量只有在其作用域内才有效。
  • 同一个作用域内,不能定义重名的变量。

3.4 变量的分类:按数据类型分类

  • 基本数据类型(primitive type)
    • 数值型:
      • 整数类型(byte,short,int,long)
      • 浮点类型(float,double)
    • 字符型(char)
    • 布尔类型(boolean)
  • 引用数据类型
    • 类(class) <- (字符串类型String)
    • 接口(interface)
    • 数组([ ])

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

  • 自动类型提升:容量小的类型自动转换为容量大的数据类型
    • (byte, short, char)→ int → long → float → double
    • byte, short, char之间不会相互转换,它们三者在计算是首先转换为int类型
    • Boolean类型不能与其他类型数据运算
    • 当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串类型。
  • 强制类型转换:自动类型转换的逆过程,将容量大数据类型转换成容量小的数据类型。
    • 使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
    • 通常,字符串不能转换为基本类型,但通过基本类型对应的包装类则可以实现吧字符串转换成基本类型。
      String a =43; int i = Integer.parseInt(a);
      
    • Boolean类型不可以转换为其它的数据类型。
  • 测试代码:
public class VariableTest {
    public static void main(String[] args) {
        //整形: byte(1字节);short(2字节);int(4字节);long(8字节)
        //byte范围: -128 ~ 127
        byte b = 12;
        System.out.println(b);
        //short范围: -2^15 ~ 2^15-1
        short s = 13;
        System.out.println(s);
        //int范围: -2^31 ~ 2^31-1
        int age = 23;
        System.out.println(age);
        //long范围: -2^63 ~ 2^63-1
        long l = 1000000L;
        System.out.println(l);

        //浮点型: float(4字节); double(8字节)
        //float: 后面需加f/F
        float f = 123.4f;
        System.out.println(f);
        //double
        double d = 123.5;
        System.out.println(d);

        //字符型(char): 1个字符 = 2字节 = 16 bit
        char c = 'a'; //有且只能放一个
        System.out.println(c);

        //布尔型 boolean: true or false
        boolean t = true;
        boolean fe = false;
        System.out.println(t);
        System.out.println(fe);

        //字符串类型 String: 引用数据类型
        String str = "abc"; //从0个开始
        System.out.println(str);

        char c1 = 'a';
        int num = 10;
        String str1 = "hello";
        System.out.println(c1 + num + str1); //107hello
        System.out.println(c1 + str1 + num); //ahello10
        System.out.println(c + (str1 + num)); //ahello10
        System.out.println((c + str1) + num); //ahello10
    }
}

四、运算符

4.1 算术运算符

  • +(正号)、-(负号)
  • +、-、*、/
  • %(取余符号与被取余数相同)、++、–、+(字符串连接)

4.2 赋值运算符

  • =、+=、-=、*=、/=、%= (不会改变本身的数据类型)

4.3 比较运算符

  • ==、!=、<、>、<=、>=
  • instanceof: 检查是否是类的对象; 如“hello” instanceof String == true

4.4 逻辑运算符

  • &(逻辑与)、|(逻辑或)、!(逻辑非)
  • &&(短路与)、||(短路或)、^(逻辑异或)
  • &和&&、| 和 || 的区别
    int x1 = 1, y1 = 1;
        if (x1++ == 2 && ++y1 == 2) {  //短路与:前面一个条件不满足,则后面不执行(短路)
            x1 = 7;                     //短路或:前面一个条件满足,则后面不执行(短路)
        }
        System.out.println("x1=" + x1 + ",y1=" + y1);
    

4.5 位运算符(对补码二进制运算)(操作的都是整形)

  • << 左移: 3 << 2 = 12 --> 322=12 空位补0,被移除的高位丢弃,空缺位补0。
  • >> 右移: 3 >> 1 = 1 --> 3/2=1 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
  • >>> 无符号右移: 3 >>> 1 = 1 --> 3/2=1 被移位二进制最高位无论是0或者是1,空缺位都用0补。
  • & 与运算: 6 & 3 = 2
  • | 或运算: 6 | 3 = 7
  • ^ 异或运算: 6 ^ 3 = 5
  • ~ 取反运算: ~6 = -7
  • 面试题:最高效的方式计算2*8: 2 << 3 或 8 << 1

4.6 三元运算符

  • (条件表达式)?表达式1:表达式2;
    • 为true,运算后的结果是表达式1;
    • 为false,运算后的结果是表达式2;
  • 表达式1和表达式2为同种类型
  • 三元运算符与if-else的联系与区别:
    • 三元运算符可简化if-else语句。
    • 三元运算符要求必须返回一个结果。
    • if后的代码块可有多个语句。

4.7 运算符的优先级(高→低)

  • 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。在这里插入图片描述

五、程序流程控制

5.1 顺序结构

  • 程序从上到下逐行地执行,中间没有任何判断和跳转。

5.2 分支结构

  • 根据条件,选择性地执行某段代码。
  • if…elseswitch-case两种分支语句。
  • 注意:
    • switch中的变量只能为如下类型(byte、short 、char、int、String、枚举)。
    • case子句中的值必须是常量,不能是变量名或不确定的表达式值。
    • default子句是可任选的。同时,位置也是灵活的。

5.3 循环结构

  • 根据循环条件,重复性的执行某段代码
  • 有while、do…while、for三种循环语句
  • 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素
  • 循环语句的四个组成部分:
    • 初始化部分(init_statement)
    • 循环条件部分(test_exp)
    • 循环体部分(body_statement)
    • 迭代部分(alter_statement)

5.4 特殊的流程控制语句

  • break语句
    • break语句用于终止某个语句块的执行。
    • break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。
  • continue语句
    • continue只能使用在循环结构中。
    • continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环。
    • continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。
  • return语句
    • 并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。
  • 注意:
    • break只能用于switch语句和循环语句中。
    • continue 只能用于循环语句中。
    • 二者功能类似,但continue是终止本次循环,break是终止本层循环。
    • break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。
    • 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
    • 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的。

总结

再一次学习Java基本语法,感受和之前完全不一样,一方面查漏补缺,一方面夯实基础,后面会继续更新学习Java的笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值