基本语法
输入输出
Java的输入输出是指程序与外部环境进行数据交互过程。Java提供了丰富的输入输出类和方法,可以方便地进行文件读写、控制台输入输出等操作。
Java的输入主要通过Scanner类来实现。Scanner类提供了多种方法来读取不同类型的数据,如nextInt()、nextDouble()等。通过创建Scanner对象,可以从键盘或文件中读取数据。
示例代码如下:
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象,从键盘读取数据
System.out.print("请输入一个整数:");
int num = scanner.nextInt(); // 读取整数
System.out.println("您输入的整数是:" + num);
System.out.print("请输入一个浮点数:");
double decimal = scanner.nextDouble(); // 读取浮点数
System.out.println("您输入的浮点数是:" + decimal);
System.out.print("请输入一个字符串:");
String str = scanner.next(); // 读取字符串
System.out.println("您输入的字符串是:" + str);
scanner.close(); // 关闭Scanner对象
}
}
Java的输出主要通过System.out对象来实现。System.out是Java标准输出流,提供了多种方法来输出不同类型的数据,如print()、println()等。可以将数据输出到控制台或文件中。
示例代码如下:
public class OutputExample {
public static void main(String[] args) {
int num = 10;
double decimal = 3.14;
String str = "Hello, Java!";
System.out.println("整数:" + num);
System.out.println("浮点数:" + decimal);
System.out.println("字符串:" + str);
}
}
数组
Java数组是一种用于存储多个相同类型数据的数据结构。它是一个固定长度的容器,可以在其中存储同一类型的数据。
声明和初始化数组:可以使用以下语法声明和初始化一个数组:
数据类型[] 数组名 = new 数据类型[数组长度];
例如,声明一个整型数组并初始化为长度为5的数组:
int[] numbers = new int[5];
访问数组元素:可以使用索引来访问数组中的元素,索引从0开始。例如,访问数组中的第一个元素:
int firstNumber = numbers[0];
数组长度:可以使用length属性获取数组的长度。例如,获取数组numbers的长度:
int length = numbers.length;
遍历数组:可以使用循环结构遍历数组中的所有元素。例如,使用for循环遍历数组numbers:
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
多维数组:Java还支持多维数组,即数组中包含其他数组。例如,声明一个二维整型数组:
int[][] matrix = new int[3][3];
数组的常见操作:Java提供了一些常见的数组操作方法,如排序、查找等。可以使用Arrays类来调用这些方法。例如,对数组numbers进行排序:
Arrays.sort(numbers);
分支
在Java中,分支语句用于根据条件的不同执行不同的代码块。Java提供了三种类型的分支语句:if语句,switch语句和三元运算符。
1. if语句可以根据指定的条件选择性地执行代码块。它的语法如下:
if (条件) {
// 如果条件为真时执行的代码
} else {
// 如果条件为假时执行的代码
}
2. switch语句根据表达式的值从多个选项中选择一个执行。它的语法如下:
switch (表达式) {
case 值1:
// 执行代码块1
break;
case 值2:
// 执行代码块2
break;
...
default:
// 如果没有任何匹配项则执行的代码块
}
3. 三元运算符是一种简化的if-else语句,用于根据条件的真假选择性地返回一个值。它的语法如下:
(条件) ? 值1 : 值2;
如果条件为真,则返回值1;如果条件为假,则返回值2。
这些分支语句可以根据不同的需求选择使用,来控制程序的流程。
循环
Java中有三种常见的循环结构,分别是for循环、while循环和do-while循环。
- for循环:用于重复执行固定次数的操作,语法如下:
for (初始化; 条件判断; 步进) {
// 循环体代码
}
例如,打印从1到10的数字可以使用如下的for循环:
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
- while循环:用于根据条件判断来重复执行操作,语法如下:
while (条件判断) {
// 循环体代码
}
例如,计算1到100的和可以使用如下的while循环:
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
System.out.println(sum);
- do-while循环:与while循环类似,不同之处在于条件判断在循环体执行之后进行,即确保循环体至少执行一次。语法如下:
do {
// 循环体代码
} while (条件判断);
例如,输入数字并求和,直到输入0为止,可以使用如下的do-while循环:
Scanner scanner = new Scanner(System.in);
int sum = 0;
int num;
do {
System.out.print("请输入一个数字:");
num = scanner.nextInt();
sum += num;
} while (num != 0);
System.out.println("和为:" + sum);
scanner.close();
需要注意的是,在循环中一定要注意循环条件的控制,避免造成死循环。另外,在循环中可以使用break
语句提前结束循环,或使用continue
语句跳过当前循环体的剩余代码,进入下一次循环。
面向对象
封装
封装(Encapsulation): 封装是将数据和对数据的操作封装在一个类中,通过定义类的成员变量和方法来实现。封装可以隐藏对象的内部细节,只向外界暴露必要的接口,提高代码的可维护性、可重用性和安全性。
继承
继承(Inheritance): 继承是指一个类可以派生出一个或多个子类,子类可以继承父类的属性和方法。通过继承,子类可以重用父类的代码,并可以在不修改父类代码的情况下添加自己特有的属性和方法。继承可以实现代码的层次化组织,提高代码的可扩展性和可维护性。
多态
多态是指同一个方法可以根据不同的对象调用出现不同的行为。多态可以通过继承和接口实现。在运行时,可以根据对象的实际类型来动态地确定方法的调用。多态可以提高代码的灵活性和扩展性,使程序更易于理解和维护。