开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情
Java基础巩固,根据目录食用即可
JavaDoc
HelloWorld.java中写文档注释(类注释、方法注释),参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
法一:在终端输入命令:javadoc -encoding UTF-8 -charset UTF-8 HelloWorld.java 可以生成自己的API文档
法二:IDEA生成:
Locale 选择地区,也是文档的语言
Other command line arguments : -encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/8/docs/api
Scanner交互
Scanner scanner = new Scanner(System.in);
- next()
String str = scanner.next(); - nextLine()
String str = scanner.nextLine();
Scanner scanner = new Scanner(System.in);
// 循环时常用hasNext来判断用户是否输入
// 判断用户有没有输入字符串
if (scanner.hasNext()) {
// 使用next方式接收
String str = scanner.next();
System.out.println("输出的内容为:" + str);
}
if (scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出的内容为:" + str);
}
scanner.close();
next()
- 读取到有效字符后才可以结束
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
- 不能得到带空格的字符串
nextLine()
- 以Enter为结束符
- 可以获得空白
增强for循环
int[] numbers = {10, 20, 30, 40, 50};
for(int x:numbers){
System.out.println(x);
}
方法重载
重载就是在一个类中,函数名相同,形参不同的函数
重载规则
- 方法名相同
- 参数列表不同(个数、类型、排列顺序等)
- 方法的返回类型可以相同可以不相同
- 仅仅返回类型不同不足以成为方法的重载
例子:
public class Demo1 {
public static void main(String[] args) {
int add1 = add(1, 2);
System.out.println(add1); // 3
double add2 = add(1, 2);
System.out.println(add2); // 3.0
int add3 = add(1, 2, 3);
System.out.println(add3); // 6
}
public static int add(int a, int b){
return a+b;
}
public static double add(double a, double b){
return a+b;
}
public static int add(int a, int b, int c){
return a+b+c;
}
}
命令行传参
cmd终端输入命令,先编译:
javac Demo2.java
需退回src包下输入完整的文件路径才可以运行,如:
java com.liang.method.Demo2 hello 1 2 3
public class Demo2 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]:" + args[i]);
}
}
}
数组
声明数组:int[] array = null;
创建数组:array = new int[10];
赋值:array[0] = 1;
二维数组:int[][] array = new int[10][10];
- 数组是相同数据类型(数据类型可以为任意类型)的有序集合
- 数组也是对象,数组元素相当于对象的成员变量
- 数组长度是确定的、不可变的。
数组初始化
1、静态初始化:创建 + 赋值
int[] a = {1,2,3,4,5};
2、动态初始化
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
3、默认初始化 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
数组使用
public class ArrayDemo {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
// for-each方法
for (int i : array) {
System.out.println(i);
}
printArray(reverseArray(array));
}
// 反转数组(数组作返回值)
public static int[] reverseArray(int[] array) {
int[] result = new int[array.length];
for (int i = 0, j = result.length - 1; i < array.length; i++, j--) {
result[j] = array[i];
}
return result;
}
// 打印数组元素
public static void printArray(int[] array){
// for循环输出
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
}
二维数组输出(两种方法)
法一:
for (int[] i:array) {
System.out.println(Arrays.toString(i));
}
法二:增强型for循环
for (int[] i:array) {
for(int j:i){
System.out.print(j+"\t");
}
System.out.println();
}
稀疏数组
当一个数组中大部分元素为0或同一值的数组时,可以使用稀疏数组来保存该数组。
如下图:原始数组 ----- 稀疏数组
import java.util.Arrays;
public class ArrayDemo3 {
public static void main(String[] args) {
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 1;
System.out.println("输出原始的数组:");
for (int[] i : array1) {
System.out.println(Arrays.toString(i));
// for (int j : i) {
// System.out.print(j + "\t");
// }
// System.out.println();
}
System.out.println("========================");
System.out.println("转为稀疏数组保存:");
int sum = 0; // 获取有效值个数
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array1[i][j] != 0) {
sum++;
}
}
}
System.out.println("有效值个数:" + sum);
int[][] array2 = new int[sum + 1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
// 遍历二维数组,将非零的值放入稀疏数组中
int count = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j] != 0) {
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
// 输出稀疏数组
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i][0] + "\t" + array2[i][1] + "\t" + array2[i][2] + "\t");
}
System.out.println("========================");
System.out.println("还原数组:");
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
for (int[] i : array3) {
System.out.println(Arrays.toString(i));
}
}