快捷键:
1.先选中,再 ctrl + / 注释快捷键, 再次输入就取消注释
2.选中,然后输入 tab 整体右移;选中,然后输入 shift+tab 整体左移


一、了解Java

1、Java重要特点

  1. Java 语言是面向对象的(oop)
  2. Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证
  3. Java 语言是跨平台性的。[即: 一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台]
    a20.
  4. Java 语言是解释型的[了解]
    解释性语言:javascript,PHP, java 编译性语言: c / c++
    区别是:解释性语言,编译后的代码,不能直接被机器执行,需要解释器来执行;编译性语言, 编译后的代码, 可 以直接被机器执行, c /c++

2、Java 运行机制及运行过程

2.1、Java 语言的特点:跨平台性

a19.


2.2、Java 核心机制-Java 虚拟机[JVM java virtual machine]

  1. JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK
  2. 对于不同的平台(系统),有不同的虚拟机。
  3. Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
    a18.编译指令、运行指令

3、什么是 JDK,JRE

3.1、JDK 基本介绍

  1. JDK 的全称(Java Development Kit)[ Java 开发工具包]
    JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等]
  2. JDK 是提供给 Java 开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。

3.2、JRE 基本介绍

  1. JRE(Java Runtime Environment)[Java 运行环境]
    JRE = JVM + Java 的核心类库[类]
  2. 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序, 计算机中只需要安装JRE即可。

3.3、JDK、JRE 和 JVM 的包含关系

  1. JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)
  2. JRE = JVM + Java SE 标准类库(java 核心类库)
  3. 如果只想运行开发好的 .class 文件只需要JRE

二、Java入门

1、第一个程序

开发一个a1.java程序,可以输出“你好”

1
2
3
4
5
6
7
8
9
10
11
12
13
//java快速入门,演示java开发步骤
//对代码的相关说明
//1. public class a1 表示 a1 是一个类,是一个 public 公有的类
//2. a1 { } 表示一个类的开始和结束
//3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
//4. main() {} 表示方法的开始和结束
//5. System.out.println("你好"); 表示输出"你好"到屏幕
//6. ; 表示语句结束
public class a1 {
public static void main(String[] args){ //编写一个 main 方法
System.out.println("你好");
}
}

文件有中文时,如何处理
1.在文件->设置文件编码->GBK
2.需要重新保存即可

a16.

2、Java 开发注意事项和细节说明

1.Java源文件以.java 为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。
2.Java应用程序的执行入口是main()方法,它有固定的书写格式:
public static void main(String[] args) {...}
3.Java语言严格区分大小写。
4.Java方法由一条条语句构成,每个语句以";"结束。
5.大括号都是成对出现的,缺一不可。[习惯,先写{}再写代码]
6.一个源文件中最多只能有一个public类。其它类的个数不限。
7.如果源文件包含一个public类,则文件名必须按该类名命名。
8.一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在
非public类中,然后指定运行非public类,这样入口方法就是非public的main方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//java快速入门,演示java开发步骤
//对代码的相关说明
//1. public class a1 表示 a1 是一个类,是一个 public 公有的类
//2. a1 { } 表示一个类的开始和结束
//3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
//4. main() {} 表示方法的开始和结束
//5. System.out.println("你好"); 表示输出"你好"到屏幕
//6. ; 表示语句结束
public class a1 {
public static void main(String[] args) { //编写一个 main 方法
System.out.println("你好");
}
}

//一个源文件中最多只能有一个 public 类。其它类的个数不限。[演示]
//Dog 是一个类
//编译后,每一个类,都对于一个.class文件
class Dog {

//一个源文件中最多只能有一个 public 类。其它类的个数不限,也可以将 main 方法写在非 public 类中,
// 然后指定运行非 public 类,这样入口方法就是非 public 的 main 方法
public static void main(String[] args) {
System.out.println("hello,小狗狗");
}

}

class Tiger {
public static void main(String[] args) {
System.out.println("hello,小狗狗");
}

}

3、Java 转义字符

在控制台,输入 tab 键,可以实现命令补全

\t :一个制表位,实现对齐的功能 
\n :换行符 
\\ :一个\ 
\" :一个" 
\' :一个' 
\r :一个回车
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//演示转义字符的使用
public class ChangeChar {

public static void main(String[] args) {
// \t :一个制表位,实现对齐的功能 (输出内容之间有固定宽度)
System.out.println("北京\t天津\t上海");

// \n :换行符
System.out.println("jack\nsmith\nmary");

// \\ :一个\ (第一个\代表转义,第二个\代表\) \\\\ :两个\
System.out.println("C:\\Windows\\System32\\cmd.exe");

// \" : 一个"
System.out.println("老韩说:\"要好好学习 java,有前途\"");

// \' :一个'
System.out.println("老韩说:\'要好好学习 java,有前途\'"); //这里单引号也可以不用转义,可以直接用

// \r :一个回车
// 解读
// 1. 输出 韩顺平教育
// 2. \r 表示回车
System.out.println("韩顺平教育\r北京"); //命令行窗口结果:北京平教育, idea输出结果:北京
}
}

a1.运行结果

4、注释

4.1、单行注释和多行注释

1
2
单行注释      //注释文字
多行注释 /* 注释文字 */

细节:1.被注释的文字,不会被 JVM(java 虚拟机)解释执行
      2.多行注释里面不允许有多行注释嵌套

4.2、文档注释

1
文档注释   /** */

a2.

4.3、 Java 代码规范(基本)

a5.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @author 小明
* @version 1.0
* @since 2.0
*/

public class Comment02 {
public static void main(String[] args) {
//选中,然后输入 tab 整体右移
// 选中,然后输入 shift+tab 整体左移
int n1 = 1 + 2;
int n2 = 5 + 10;
int n3 = 1 + 3 * 34;
}
}

三、变量

1
2
3
4
5
6
7
8
9
10
11
不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如:
//变量有三个基本要素(类型+名称+值)
class Test{
public static void main(String[]args){
int a = 1;//定义了一个变量,类型int整型,名称a,值1
int b = 3;//定义了一个变量,类型int谁整型名称b,值3
b = 89//把89值赋给b变量
System.out.println(a);//输出a变量的值
System.out.println(b);//输出b变量的值
}
}

1、变量的介绍

1.1、概念

变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。

1.2、变量使用的基本步骤

  1. 声明变量
    int a;
  2. 赋值
    a = 60; // 把 60 赋给 a
    使用 System.out.println(a);
    //也可以一步到位[int a = 60; 通常我们是一步完成]

1.3、变量快速入门

演示记录 人的信息的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Var02 {
public static void main(String[] args) {
//记录人的信息
int age = 30;
double score = 88.9;
char gender = '男';
String name = "king";
//输出信息(有快捷键)
System.out.println("人的信息如下:");
System.out.println(name);
System.out.println(age);
System.out.println(score);
System.out.println(gender);
}
}

a9.运行结果


变量使用注意事项

  1. 变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,
    比如:int 4个字节,double就是8个字节]
  2. 该区域有自己的名称[变量名]和类型[数据类型]
  3. 变量必须先声明,后使用,即有顺序
  4. 该区域的数据/值可以在同一类型范围内不断变化
  5. 变量在同一个作用域内不能重名
  6. 变量=变量名+值+数据类型,这一点注意。变量三要素
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class VarDetail {
    public static void main(String[] args) {
    //变量必须先声明,后使用, 即有顺序
    int a = 50; //int类型
    System.out.println(a);//输出50
    // 该区域的数据/值可以在同一类型范围内不断变化
    //a = "jack"; //×
    a = 88; //对
    System.out.println(a);//输出88

    //变量在同一个作用域内不能重名
    //int a = 77;//错误
    }
    }

    class Dog{
    public static void main(String[] args) {
    int a = 666;//对
    System.out.println(a);
    }
    }

2、程序中 +号的使用

  1. 当左右两边都是数值型时,则做加法运算
  2. 当左右两边有一方为字符串,则做拼接运算
  3. 运算顺序,是从左到右
    1
    2
    3
    4
    5
    6
    7
    8
    public class Plus {
    public static void main(String[] args) {
    System.out.println(100 + 98);//198
    System.out.println("100" + 98);//10098
    System.out.println(100 + 3 + "hello");//103hello
    System.out.println("hello" + 100 + 3);//hello1003
    }
    }

3、✒️数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
a10.背过这张图

String(字符串)准确来讲是一个类(class)

3.1、整数类型

Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等

3.1.1、案例演示

byte n1 = 10;//1个字节
short n2 = 10;//2个字节
int n3 = 10;//4 个字节
long n4 = 10; //8 个字节

3.1.2、整型的类型

a11.

3.1.3、整型的使用细节

  1. Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性。
  2. Java的整型常量(具体值)默认为int型,声明long型常量须后加’l’或’L’
  3. java程序中变量常声明为int型,除非不足以表示大数,才使用long(够用就行)
  4. bit:计算机中的最小存储单位。byte:计算机中基本存储单元,1byte= 8 bit
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class IntDetail {
    public static void main(String[] args) {

    //Java 的整型常量(具体值)默认为 int 型,声明 long 型常量须后加‘l’或‘L’
    int n1 = 1;//占4个字节
    //int n2 = 1L;//对不对?不对(1L是long类型,int装不下,报错)
    long n3 = 1L;//对

    System.out.println();
    }
    }

3.2、浮点类型

Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等

3.2.1、浮点型的分类

a12.

1.关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
2.尾数部分可能丢失,造成精度损失(小数都是近似值)。

3.2.2、浮点型使用细节

  1. 与整数类型类似,Java浮点类型也有固定的范围字段长度,不受具体OS的
    影响,(float4个字节,double是8个字节)
  2. Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F’
  3. 浮点型常量有两种表示形式
    十进制数形式:如:5.12、 512.0f 、.512 (必须有小数点)
    科学计数法形式:如:5.12e2 等于[5.12 * 10的2次方],5.12e-2 等于[5.12 / 10 的2次方]
  4. 通常情况下,应该使用 double 型,因为它比 float 型更精确。
  5. 浮点数使用陷阱: 2.7 和 8.1 / 3 比较
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    public class FloatDetail {
    public static void main(String[] args) {

    //Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F'
    //float num1 = 1.1; //对不对?错误
    float num2 = 1.1F; //对的
    double num3 = 1.1; //对
    double num4 = 1.1f; //对


    //十进制数形式:如:5.12 512.0f .512 (必须有小数点)
    double num5 = .123; //等价 0.123
    System.out.println(num5);//输出0.123
    //科学计数法形式:如:5.12e2 等于[5.12 * 10的2次方],5.12e-2 等于[5.12 / 10 的2次方]
    System.out.println(5.12e2);//输出512.0(因为是浮点型,所以带小数点)
    System.out.println(5.12e-2);//输出0.0512


    //通常情况下,应该使用 double 型,因为它比 float 型更精确。
    //[举例说明]double num9 = 2.1234567851;float num10 = 2.1234567851F;
    double num9 = 2.1234567851;
    float num10 = 2.1234567851F;
    System.out.println(num9);
    System.out.println(num10);


    //浮点数使用陷阱: 2.7 和 8.1 / 3 比较
    double num11 = 2.7;
    double num12 = 8.1 / 3; //(数学上=2.7)
    System.out.println(num11);//2.7
    System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7
    //得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断时,要小心

    if( num11 == num12) {
    System.out.println("num11 == num12 相等");
    }//错误写法

    //应该是以两个数的差值的绝对值,在某个精度范围类判断
    //正确的写法 ,(先选中,再 ctrl + / 注释快捷键, 再次输入就取消注释)
    if(Math.abs(num11 - num12) < 0.000001 ) {
    System.out.println("差值非常小,到我的规定精度,认为相等...");
    }
    // 可以通过 java API 来看
    System.out.println(Math.abs(num11 - num12));
    //细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等

    }
    }
    a13.运行结果

3.3、Java API 文档

  1. API(Application Programming Interface,应用程序编程接口),是Java 提供的基本编程接口(java提供的类还有相关的方法)。
    中文在线文档:
  2. Java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法.
  3. Java类的组织形式[图]
    a14.
  4. 举例说明如何使用,如ArrayList类有哪些方法
    (1)按照:包—>类—>方法 查找
    (2)直接索引ArrayList

3.4、字符类型(char)