package CH03_JAVAMethod;
import java.util.Scanner;
//方法的定义
public class XZ01_DefinitionOfMethod {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int x = input.nextInt();
System.out.println("请输入第二个数字:");
int y = input.nextInt();
// 声明变量x和y接收用户输入变量
int result = sum(x, y);
// 调用方法获取返回值
System.out.println("大数是:" + result);
// 输出返回值
input.close();
}
public static int sum(int x, int y) {
// 修饰符 返回值类型 方法名(参数类型 参数名){
int result = 0;
// 声明变量返回结果
if (x == y) {
return 0;
}
if (x > y) {
result = x;
} else {
result = y;
}
// 方法体
return result;
// return 返回值;
}
}
Java方法是语句的集合:
设计方法的原则:
方法的定义Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
package CH03_JAVAMethod;
//方法的重载
public class XZ02_OverloadingOfMethod {
public static void main(String[] args) {
// 声明变量x和y接收用户输入变量
int result = add(10, 20, 30);
int result2 = add(10, 20);
double result3 = add(10, 20, 30.6, 40);
// 方法名相同,根据传递参数数量,类型不同自动判断
System.out.println("和为:" + result);
System.out.println("和为:" + result2);
System.out.println("和为:" + result3);
// 输出返回值
}
public static int add(int x, int y) {
// 修饰符 返回值类型 方法名(参数类型 参数名){
int result = 0;
// 声明变量返回结果
result = x + y;
// 方法体
return result;
// return 返回值;
}
public static int add(int x, int y, int z) {
// 修饰符 返回值类型 方法名(参数类型 参数名){
int result = 0;
// 声明变量返回结果
result = x + y + z;
// 方法体
return result;
// return 返回值;
}
public static double add(double x, double y, double z, double n) {
// 修饰符 返回值类型 方法名(参数类型 参数名){
double result = 0;
// 声明变量返回结果
result = x + y + z + n;
// 方法体
return result;
// return 返回值;
}
}
package CH03_JAVAMethod;
//传参
public class XZ03_ChuanshenOfMethod {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
命令行传参有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main( )函数实现。
通过cmd窗体编译java文件传递参数
编译文件 javac XZ03_ChuanshenOfMethod.java
cd…/ 回退到 src目录下
书写全路径 java CH03_JAVAMethod/XZ03_ChuanshenOfMethod
加上传递参数 java CH03_JAVAMethod.XZ03_ChuanshenOfMethod XuanZi XuanZiShaer
!!!注释可能无法编译,导致编译失败
package CH03_JAVAMethod;
//可变参数
public class XZ04_VariableParameterOfMethod {
public static void main(String[] args) {
printMax(312, 22.2, 3213, 32131);
}
public static void printMax(int a, double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
//排序!
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
package CH03_JAVAMethod;
//递归
public class XZ05_RecursionOfMethod {
public static void main(String[] args) {
System.out.println(f(25));
}
public static long f(long n) {
if (n == 1) {
return 1;
} else {
return n * f(n - 1);
}
}
}
package CH04_JAVAArrays;
//数组的定义
public class XZ01_DefinitionOfArray {
public static void main(String[] args) {
int[] nums;
// 声明数组
nums = new int[10];
// 定义数组空间
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;
nums[5] = 6;
nums[6] = 7;
nums[7] = 8;
nums[8] = 9;
nums[9] = 10;
// 对数组进行赋值
// nums[10] = 11;
// 数组素引超出范围
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
System.out.println("和为:" + sum);
}
}
package CH04_JAVAArrays;
//数组状态
public class XZ02_ArrayState {
public static void main(String[] args) {
int[] nums = new int[10];
nums[0] = 1;
// 动态状态
int[] nums2 = {10, 20, 30, 40, 50};
// 静态状态
System.out.println(nums[0]);
System.out.println(nums[1]);
System.out.println(nums2[0]);
}
}
package CH04_JAVAArrays;
//数组下标越界
public class XZ03_ArraySubscriptOutOfBounds {
public static void main(String[] args) {
int[] nums = new int[10];
System.out.println(nums[10]);
//打印数组下标超过数组存储就会报错: 数组下标越界
}
}
package CH04_JAVAArrays;
//数组基础案例
public class XZ04_ArrayBasicCase {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println("=========遍历数组============");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + "\t");
}
System.out.println();
System.out.println("==========遍历数组============");
for (int num : nums) {
System.out.print(num + "\t");
}
System.out.println();
System.out.println("==========计算和============");
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
System.out.print("和为:" + sum);
System.out.println();
System.out.println("==========计算最大数============");
int max = nums[0];
for (int i = 0; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
}
}
System.out.print("最大数为:" + max);
System.out.println();
System.out.println("==========反转数组============");
for (int i = 0; i < reverse(nums).length; i++) {
System.out.print(reverse(nums)[i] + "\t");
}
}
public static int[] reverse(int[] nums) {
// 反转数组
int[] result = new int[nums.length];
for (int i = 0, j = result.length - 1; i < nums.length; i++, j--) {
result[i] = nums[j];
}
return result;
}
}
package CH04_JAVAArrays;
//多维数组
public class XZ05_multidimensionalArray {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5};
int[][] ages = {{1, 2}, {2, 3}, {3, 4}, {4, 5}};
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + "\t");
}
System.out.println();
System.out.println("==========打印多维数组======");
for (int i = 0; i < ages.length; i++) {
for (int j = 0; j < ages[i].length; j++) {
System.out.print(ages[i][j] + "\t");
}
}
}
}
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
package CH04_JAVAArrays;
//Arrays类
import java.util.Arrays;
public class XZ06_ArrayClass {
public static void main(String[] args) {
int[] nums = {2, 4, 6, 7, 5};
Arrays.sort(nums);
//数组排序
System.out.println(Arrays.toString(nums));
//打印数组
Arrays.fill(nums, 2, 4, 0);
// 填充数组 起始下标 填充值
System.out.println(Arrays.toString(nums));
}
}
package CH04_JAVAArrays;
import java.util.Arrays;
//冒泡排序
public class XZ07_bubbleSort {
public static void main(String[] args) {
// 比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置
// 每一次比较,都会产生出一个最大,或者最小的数字
// 下一轮则可以少一次排序
// 依次循环,直到结束
int[] a = {1, 4, 5, 6, 72, 2, 2, 2, 25, 6, 7};
int[] sort = sort(a);//调用完我们自己写的排序方法以后,返回一个排序后的数组
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array) {
//临时变量
int temp = 0;
//外层循环,判断我们这个要走多少次;
for (int i = 0; i < array.length - 1; i++) {
boolean flag = false;//减少没有意义的比较
//内层循环,比价判断两个数,如果第一个数,比第二个数大,则交换位置
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j + 1] > array[j]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
flag = true;
}
}
if (!flag) {
break;
}
}
return array;
}
}
冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!
冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。
我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。
冒泡排序口诀:
暂时不记录后续补充