JAVASE基础

https://www.bilibili.com/video/BV1Cv411372m

0.IntelliJ IDEA实用快捷键

  • CTRL + / :为代码注释
  • CTRL+SHIFT+/:整段注释
  • CTRL+D:复制到下一行
  • CTRL+ALT+T:环绕代码(for\while等)
  • CTRL+ALT+SPACE:自动提示代码
  • 右键-生成:快速为类生成set、get、构造函数

1. Java入门

1.1 java基础知识

javac.exe:编译工具

java.exe:执行工具

过程:1.编写代码 2.编译代码(javac) 3.运行代码(java)

文件名称必须与代码的类名称一致。、

javac HelloWorld.java(生成HelloWorld.class)

java HelloWorld

1.2 JDK的组成

  • JVM:Java虚拟机,运行Java程序的地方。
  • 核心类库:Java类。
  • JRE:Java的运行环境。(JVM+核心类库)
  • 开发工具:Java、Javac

1.3 IDEA

project的构成:

  • project(项目、工程)
  • module(模块)
  • package(包)
  • class(类)

2. Java语法

2.1 char类型ASCII码(leetcode用)

System.out.println('a'+10);//107
System.out.println('A'+10);//75
System.out.println('C'-'A');//2
System.out.println((char)('c'-1));//b

Java支持二进制、八进制、十六进制的数据,分别需要以0b、0、0X或者0x开头。

int a1 = 0B01100001;
int a2 = 0141;
int a3 = 0XFA;
System.out.println(a1+" "+a2+" "+a3);//97 97 250

2.2 变量类型转换

  • 自动类型转换

    • byte→short→int→long→float→double
    • char→int
  • 表达式的自动类型转换

    • 表达式的最终结果由表达式的最高类型决定。
    • 表达式在,byte、short、char是转换为int参与运算。
  • 强制类型转换

    • byte b = (byte)a (快捷键:ALT+ENTER)
    • 可能会造成精度丢失。
    • 小数转为整数是直接阶段小数保留整数。
int i =5;
int j = 2;
System.out.println(i/j);//2
System.out.println(1.0*i/j);//2.5

2.3 运算符

  • 自增/自减
int a = 10;
int rs = ++a;//11
a=10;
rs =a++;//10

int m =5;
int n =3;
int res = ++m - --m + m++ - ++n + n-- +3; //6-5+5-4+4+3=9
  • 扩展的赋值运算符+=、-=自带强制类型转换。
int a = 10, b = 5;
System.out.println(a = b);//5,先赋值给a
  • 逻辑与:&;逻辑或:|;逻辑非:!;逻辑异或:^;

  • &&短路与;||短路或;一边已经确定,另一边就不执行

  • 三元运算符:条件表达式?值1:值2

int score = 61;
String rs = score >= 60 ? "及格" : "不及格"
System.out.println(rs);//及格
  • 运算符优先级 && > ||(加个括号就好了)
System.out.println(10 > 3 || 10 > 3 && 10 < 3);//(true || false)=true
  • 使用Scanner接收键盘输入
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();//等待输入整数,直到输入回车键
String name = sc.next();//等待输入字符串

3. 流程控制

  • switch表达式要求只能是byte、short、int、char、string。

  • do-while先执行后判断,while先判断后循环。

  • Random的使用

import java.util.Random;
// 1.导包
// 2.创建一个Random对象
// 3.调用Random提供的功能:nextInt得到随机数
Random r = new Random();
int data = r.nextInt(bound:10);//生成0-9

4. 数组

  • 数组初始化
int[] ages = {20,30,40,50};//静态初始化
int[] arr = new int[3];//{0,0,0};动态初始化
boolean[] arr = new boolean[3];//{false,false,false}
  • 数组存储
int[] arr1 = {11,22,33};
int[] arr2 =arr1;//两个数组指向同一片内存区域
arr[1] = 99;
System.out.println(arr1[1]);//99
arr2 = null;
System.out.println(arr2);//null
System.out.println(arr2.length);//空指针异常
  • debug工具使用
    • 打断点
    • 使用Debug方式启动程序
    • 控制代码一行一行执行

5. 方法(函数)

  • 方法在计算机的执行:栈。

  • 参数传递机制:值传递,传输的是实参的值的副本。

    • 实参:在方法内部定义的变量。
    • 形参:以方法为例,是方法定义时的变量。
  • 基本类型的参数传输的是参数的数据值,引用类型的参数传输存储的地址值。

public static void change(int[] arrs){int[] arrs = new int[]{
{10,20,30};
change(arrs);
System.out.println("arrs[1]");//222
}
public static void change(int[] arrs){
System.out.println("arrs[1]");//20
arrs[1] = 222;
System.out.println("arrs[1]");//222
}