Java基础操作

First Post:

Last Update:

介绍


学习 JAVA 的理由:

  1. 全球最受欢迎的编程语言之一
  2. 是一种极为灵活的编程语言
  3. 好找工作

概念

java 编译流程

1
2
3
4
graph LR

.java源码 --编译--> .Class字节码 --JVM--> 机器码

JDK, JRE, JVM

缩写名词解释

  • JDK—-Java Development Kit—-java 开发工具
  • JRE—-Java Runtime Env.—-java 的运行环境(库和工具)
  • JVM—-Java Virtual Machine—-java 虚拟机(运行 java 程序)
1
2
graph LR
JDK --- JRE --- JVM

IDE—-Integrated Development Environment—-集成开发环境
java SE java 标准版

IDE 推荐
Eclipse 或 Intellij IDEA


Eclipse

快捷输入:
sysout + alt + / = System.out.println("test")

1
2
3
//一个一个字母写太慢
System.out.println("test")

基础

变量

数据类型 大小 初始/引用
boolean 1 bit 初始 true/false
int 4 bit 初始
double 8 bit 初始
char 2 byte 初始
String varies 引用
  • 初始值

    • 8 个类型
    • 储存数据
    • 只能储存一个值
    • 内存占用小
  • 引用值

    • 无限制
    • 储存内存地址
    • 可以储存更多值
    • 内存占用大
1
2
3
4
5
6
7
int x =123;
float y = 3.14f;
boolean z = true;
char symbol = '@';
String name = "Bro ";

System.out.println("Hello "+name);

用户输入

Scanner 扫描器

1
2
3
4
5
//使用Scanner时需要导入对应的包
import java.util.Scanner

Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();

Java GUI

1
2
3
4
5
6
7
8
9
10
11
//首先先导入包
import javax.swing.JOptionPane;

...

String name = JOptionPane.showInputDialog("Enter your name"); //弹出对话框, 返回一个字符串
JOptionPane.showMessageDialog(null, "Hello "+name); //弹出输入后的提示

//Integer.parseInt()将函数返回值转化为整型
int age = Integer.parseInt(JOptionPane.showInputDialog("Enter your age"));
JOptionPane.showMessageDialog(null, "You are "+age+" years old");

数学包

1
2
3
4
5
6
7
8
9
10
11
12
double x = 3.14;
double y = 10;

//比较大小, 返回大的数, 同理.min()
Math.max();
Math.abs(); //返回绝对值

Math.sqrt(); //平方根

Math.round(); //四舍五入
Math.ceil(); //向上取整
Math.floor(); //向下取整

随机数

1
2
3
4
5
6
7
8
9
10
11
import java.util.Random;

...

//伪随机数
Random random = new Random();

int x = random.nextInt(100); //将随机限制在0~100
double x = random.nextDouble();
...


数组

1
2
3
4
5
6
7
8
9
String[] cars = {"Camaro", "Corvette", "Tesla"};
String[] cars = String[3];

#二维数组
String[][] cars = {{"1", "2", "3"},
{"4", "5", "6"},
};

String[][] cars = [3][3];

字符方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String name = "Bro";

name.equals("Bro"); //判断字符相同
name.equalsIgnoreCase(); //忽略大小写
name.length(); //获取字符长度
name.charAt(); //通过下标获取字符
name.indexOf(); //通过字符获取下标
name.isEmpty(); //判断字符是否为空

//转换大小写
name.toUpperCase();
name.toLowerCase();

name.trim(); //删除空格
name.replace("<替换前>", "<替换后>"); //替换字符

包装类(wrapper class)

封装类要慢于原始数据类型, 但封装类可以调用许多方法

1
2
3
4
5
6
7
8
// 自动装箱和自动拆箱
// 封装类会被JAVA编译器自动拆箱和封箱
// 使其自然的切换封装类或原始数据类型

Boolean a = true;
Character b = '@';
Integer c = 123;
Double d = 3.14;
原始数据类型 封装类
boolean Boolean
char Character
int Integer
double Double

数组列表

一个可调整大小的数组, 数组内的数据可以在其编译后加入和删除
但注意, 数组列表只储存引用数据类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.ArrayList;

// 声明数组列表
ArrayList<String> food = new ArrayList<String>();
food.add("pizza");
food.add("hamburger");
food.add("hotdog");

// 替换数组列表的元素
// 删除, 清除
food.set(0, "sushi");
food.remove(2);
food.clear();

// 数组列表的长度用.size()获取
// 数组列表的元素用.get()获取
for(int i=1; i<food.size(); i++){
System.out.println(food.get(i));
}

二维数组列表

一个动态的嵌套数组, 你可以在运行时改变数组大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
...

// 二维数组列表
ArrayList<ArrayList<String>> groceryList = new ArrayList();

ArrayList<String> backeryList = new ArrayList();
backeryList.add("pasta"); backeryList.add("garlic bread");
backeryList.add("donuts");

ArrayList<String> produceList = new ArrayList();
produceList.add("tomatoes"); produceList.add("zucchini");
produceList.add("peppers");

ArrayList<String> drinksList = new ArrayList();
drinksList.add("soda"); drinksList.add("coffee");

groceryList.add(backeryList); groceryList.add(produceList);
groceryList.add(drinksList);

System.out.println(groceryList);

foreach 循环

增强的 for 循环

1
2
3
4
5
6
7
8
9
10
String[] animals = {"cat", "dog", "rat", "bird"};

// for (元素:列表名)
for(String i : animals) {
System.out.println(i);
}

// foreach 循环同样适用于数组列表
ArrayList<String> otherAnimals = new ArrayList();
otherAnimals.add("cat"); otherAnimals.add("dog")

方法, 函数(method)

相当于其他编程语言的函数

1
2
3
4
5
6
7
8
// void 函数返回类型
static void hello(String name) {
System.out.println("Hello "+name);
}

// 调用函数
hello("Bro~");


重载方法

拥有同一个名字的多个方法; 但形参不同, 具体方法不同
例:

1
2
3
4
5
6
7
8
9
10
11
static int add(int a, int b){
return a + b;
}

static int add(int a, int b, int c){
return a + b + c
}

static int add(int a, int b, int c, int d){
return a + b + c + d
}

printf 格式化输出

Java 的格式化输出1

1
2
// .printf(格式化文字, 参数)
System.out.printf("This is a format string %d", 123);
格式化 符号
十进制数 %d
浮点数 %f
布尔值 %b
字符 %c
字符串 %s

例:

1
2
3
4
5
6
7
8
9
// 标志(flag) "-", "+", "0", ","
// - :左对齐
// + :输出正负符号
// 0 :用0填充数字
// , :数字大于1000, 用","隔开
% <标志> <精度> <宽度> <格式化类型>

// 字符串格式化
System.out.printf("Hello %10s", "this is format");

关键字 final

final 关键字, 使其变量无法被更改

1
2
3
4
5
6
final double pi = 3.14159;

// final 关键字不能更改变量 pi
pi = 4;

System.out.print(pi);

面向对象 OOP


  1. 1.大部分语言都要此功能, 可以去网上查查