Java学习笔记——基本语法

HelloWorld

public class HelloWorld{
	public static void main(String[] args){
		System.out.print("Hello World!");
	}
}

1 关键字

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写

在这里插入图片描述
在这里插入图片描述
注:图片来自尚硅谷

  • 保留字
    现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用这些保留字:
    byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const

2 标识符

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。

  • 命名规则
    • 由26个英文字母大小写,0-9 ,_或 $ 组成
    • 不可以以数字开头。
    • 不可以使用关键字和保留字,但能包含关键字和保留字。
    • Java中严格区分大小写,长度无限制。
  • 命名规范
    • 包名:多单词组成时所有字母都小写:xxxyyyzzz
    • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    • 变量名、方法名:驼峰式,多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

3 数据类型

3.1 基本数据类型

  • 数值型

    • 整数类型
    类型占用存储空间范围
    byte1字节-128~127
    short2字节-215~215-1
    int4字节-231~231-1
    long8字节-263~263-1

    java的整型常量默认为 int 型,声明long型常量须后加’l’或’L’,否则,若数值过大,超过了int的范围,编译器会报错。

    long myLong = 212124543534565465L;
    
    • 浮点类型
    类型占用存储空间范围
    float 单精度4字节-3.403E38~3.403E38
    double 双精度8字节-1.798E308~1.798E308

    Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’,否则数值会默认为double类型,此时转化为存储空间较小的float类型可能会失去精度,编译器会报错。

    float myFloat = 1.34f;
    
  • 字符型 (char)
    包含两个字节。

    char myChar = 'a';
    char myChar = '中';
    char myChar = '\t';
    char myChar = '\u1234'; // 输出‘?’
    
  • 布尔型 (boolean)
    只允许取值true和false,无null。
    不可以0或非 0 的整数替代false和true,这点和C语言不同。

  • 基本数据类型转换

    • 自动类型转换
      容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
      在这里插入图片描述
      • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
      • byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型(即使相同类型运算也是如此)。
      • 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
    • 强制类型转换
      • 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符"()",但可能造成精度降低或溢出,格外要注意。
      • 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
        String a =21;
        int i = Integer.parseInt(a);
        
      • boolean类型不可以转换为其它的数据类型。

3.2 引用数据类型

  • 类 (class)
  • 接口(interface)
  • 数组([ ])

值null可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。

  • 补充
    String类属于引用类型,可用null赋值。
    String类是一个典型的不可变类,String对象创建出来就不可能被改变。创建出的字符串将存放在数据区,保证每个字符串常量只有一个,不会产生多个副本。

4 运算符

运算符是一种特殊的符号,用以表示特定的数学或逻辑操作,如比较、赋值等。

  • 算术运算符
    +, -, *, /, %, ++, –

  • 赋值运算符
    =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=

    short s = 3; 
    //s=s+2; // 编译不通过
    s = (short)(s + 2); // 可以实现运算,但是要通过两次类型转换,不建议使用
    s += 2; // 既可以实现运算,又没有类型转换
    
    int i = 1;
    i *= 0.1; // 结果为0
    
  • 关系运算符
    ==, !=, <, >, <=, >=, instanceof

  • 逻辑运算符
    &—逻辑与,|—逻辑或,!—逻辑非
    &&—短路与,||—短路或 ,^—逻辑异或

  • 位运算符
    <<, >>, >>>(无符号右移), &, |, ^, ~

  • 三元运算符
    (条件表达式) ? 表达式1 : 表达式2;

算符优先级参考

5 程序流程控制

  • 顺序结构

  • 分支结构

    • if…else (else if)
    • switch
      1、switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String (jdk1.7);
      2、case子句中的值必须是常量,且所有case子句中的值应是不同的;
      3、break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。

    如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。为什么?

  • 循环结构
    while、do…while、for
    注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
    关于break,continue的使用:

    label:for(int i = 0; i < 10; i++){
    	for(int j = 0; j < 10; j++){
    		// break;
    		// continue;
    		// break label;
    		continue label;
    		// System.out.println("这句语句不能执行"); // 编译不通过
    	}
    }
    

6 数组

数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。

6.1 一维数组

  • 声明及初始化
    String[] names;
    int scores[];
    // 1. 静态初始化
    names = new String[]{"周强", "王强"};
    int[] myInt = {12,13,14}; // 定义时直接赋值,可以省略new int[]
    // 2. 动态初始化
    scores = new int[4];
    scores[0] = 23;
    scores[1] = 14;
    // 属性
    System.out.println(names.length); // 2
    
  • 创建数组以后的默认值
    • byte short int long: 0
    • float double: 0.0
    • char: ’ '(空格)
    • boolean: false
    • 引用类型: null
  • 数组一旦初始化,其长度不可变

6.2 多维数组

  • 声明及初始化
    int[][] scores2;
    String[][] names;
    // 1. 静态初始化
    scores2 = new int[][]{{1,2,3},{3,4,5},{6}};
    // 2. 动态初始化
    names = new String[6][5];//动态初始化的方式一
    names = new String[6][];//动态初始化的方式二
    names[0] = new String[5];
    names[1] = new String[4];
    names[2] = new String[7];
    names[3] = new String[5];
    names[4] = new String[8];
    names[5] = new String[5];
    //错误的初始化方式
    //names = new String[][];
    //names = new String[][5];
    
    // 引用具体的某一个元素
    int[][] i = new int[3][2];//int[] i[] = new int[3][2];
    i[1][0] = 90;
    i[2][1] = 100;
    

6.3 操作数组的工具类:Arrays

java.util.Arrays类包含了用来操作数组(比如排序和搜索)的各种方法。Arrays拥有一组static方法。

  • equals():比较两个array是否相等(拥有相同元素个数,且所有对应元素两两相等)。
  • fill():将值填入array中。
  • sort():用来对array进行排序。
  • binarySearch():在排好序的array中寻找元素。

另:System.arraycopy():array的复制。


以上笔记参考尚硅谷Java教程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值