初认识Java
简介
Java 是一种高级的、面向对象的编程语言,以其可移植性、健壮性和可扩展性而闻名。
Java 由 Sun Microsystems(现为 Oracle)开发,遵循“一次编写,随处运行”原则,允许代码在任何具有 Java 虚拟机 (JVM) 的设备上运行。
它广泛用于构建大型企业应用程序、Android 移动应用程序和 Web 服务。
Java 具有自动内存管理(垃圾回收)、庞大的标准库和强大的安全功能,使其成为后端系统、分布式应用程序和基于云的解决方案的热门选择。
配置
安装JDK
设置环境变量
第一个Java程序
1
2
3
4
5public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}编译:
javac Main.java
运行:
java Main
用IntelliJ IDEA
Java程序的生命周期:
编辑程序
在文本编辑器中键入程序,以
.java
扩展名保存编译
javac编译器:输入 Java 源代码,输出字节码(独立于机器或平台),生成
.class
文件执行字节码
Java虚拟机(JVM):输入字节码,输出机器码(0和1),由本地机器的 CPU 执行
语法
基本结构
- 每一行代码都必须位于
class
(类)内 - 类名以大写字母开头
- Java 区分大小写
- java 文件的名称必须与类名匹配
- 注释:
- 单行:
//
- 多行:
/* */
- 文档:
/** */
- 单行:
输出
System.out.println()
System.out.print()
(不换行)
输入
导包:import java.util.Scanner;
创建对象:Scanner scanner = new Scanner(System.in);
读取:String name = scanner.nextLine();
输入类型:
方法 | 作用 |
---|---|
nextBoolean() |
读取一个boolean |
nextByte() |
读取一个 byte |
nextDouble() |
读取一个 double |
nextFloat() |
读取一个 float |
nextInt() |
读取一个 int |
nextLine() |
读取一个 String |
nextLong() |
读取一个 long |
nextShort() |
读取一个 short |
变量
类型:
String
、int
、float
、char
、boolean
……声明:
type variableName = value;
命名规则:
- 可以包含字母、数字、
_
和$
- 可以
$
、_
、小写字母开头 - 区分大小写
- 保留字(如 Java 关键字,如
int
或boolean
)不能用作名称
- 可以包含字母、数字、
数据类型
- 基本数据类型:
byte
,short
,int
,long
,float
,double
,boolean
,char
- 非基本数据类型:
String
,Array
,Class
数据类型 | 描述 | 大小 |
---|---|---|
byte | 2^7 ~ 2^7 - 1 |
1B |
short | -2^15 ~ 2^15 - 1 |
2B |
int | -2^31 ~ 2^31 - 1 |
4B |
long | -2^63 ~ 2^63 - 1 |
8B |
float | $3.4\times10^{38}$,约 7 位小数 | 4B |
double | $1.79\times10^{308}$,约 15 位小数 | 8B |
boolean | true/false | 1B |
char | 1个字符(ASCII,Unicode) | 2B |
long
:以L
结尾float
:以f
结尾double
:以d
结尾
科学计数法:e
或E
类型转换:
- 自动转换:
byte
->short
->char
->int
->long
->float
->double
- 强制转换:
double
->float
->long
->int
->char
->short
->byte
(加括号)
条件 循环
if…else
简写 if:
variable = (condition) ? expressionTrue : expressionFalse;
switch
while
do…while
for
for each:专门用于遍历数组(或其他数据集)中的元素
1
2for (type variableName : arrayName) {
// code block to be executed
数组
创建:用方括号定义
1
2
3
4
5
6
7String[] cars;
int[] myNum = {10, 20, 30, 40};
Man[] mans = {new Man(1, 1), new Man(2, 2)};
int[] arrays = new int[2];
a[0] = 1;
a[1] = 2;大小:
.length
遍历:
- for 循环
1
2
3
4String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.length; i++) {
System.out.println(cars[i]);
}- for-each 循环
1
2
3
4String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (String i : cars) {
System.out.println(i);
}
多维数组
创建:
1
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
遍历:
- for 循环
1
2
3
4
5
6int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for (int i = 0; i < myNumbers.length; ++i) {
for (int j = 0; j < myNumbers[i].length; ++j) {
System.out.println(myNumbers[i][j]);
}
}- for-each 循环
1
2
3
4
5
6int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for (int[] row : myNumbers) {
for (int i : row) {
System.out.println(i);
}
}
字符串
String
变量包含一组用双引号括起来的字符
方法:
length()
:字符串长度toUpperCase()
:转换为大写toLowerCase()
:转换为小写indexOf("...")
:返回字符串中指定文本首次出现的索引(包括空格)concat()
:连接两个字符串+
:数字相加,字符串串联
转义:
\
:转换为普通字符串字符\n
:换行\t
:Tab\r
:回车\b
:退格\f
:换页符