https://www.bilibili.com/video/BV12J41137hu
增强for循环
主要用于数组和集合
for(声明语句:表达式){
代码
}
public class ForDemo04 {
public static void main(String[] args) {
int[] number = {10,20,30,40};
for (int x:number ) {
System.out.println(x);
}
}
}
break continue goto
break用于退出循环;
continue 终止本次循环,进行下一次;
goto 关键字没有正式的在java中使用
标签 是指后面跟个冒号的标识符;例如outer:
练习打印三角形和Debug
public class ForSanjiao {
public static void main(String[] args) {
//打印5行的三角
int n =5;
for (int i = 1; i <= n; i++) {//控制行数
for (int k = 1; k <= n - i; k++) {//控制空格的个数
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制打印的图形
System.out.print("*");
}
System.out.println();//控制换行
}
}
}
方法
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
Return 返回值;
}
方法调用
对象名.方法名(实参列表)
Java支持2种调用方式:根据方法是否返回值来选择;
如int large = max(30,40);
System.out.println(“Hello world!”);
值传递(java) 和引用传递
方法的重载
方法名相同,形参不同的函数;
返回类型可以相同,也可以不同;
命令行传参
有时候需要运行一个程序时再传递给他消息。需要靠命令行传参给main()函数;
可变参数
Jdk1.5开始,支持传递同类型的可变参数给一个方法,参数类型后面加省略号(…);一个方法只能有一个可变参数,且是最后一个参数。
public void test(int a,int...b){
System.out.println(b[1]);
}
递归
递归边界
写一个计算器实现加减乘除;
数组
创建数组,使用new操作符来创建数组;
dataType[] array = new dataType[arraySize]
package com.array;
public class Demo01 {
public static void main(String[] args) {
int[] nums;//1声明一个数组
nums=new int[10];//2创建一个数组
//3给数组元素赋值
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;
//计算所有数的和
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum +=nums[i];
}
System.out.println("总和为:"+sum);
}
}
内存分析
三种初始化方式
静态初始化
Int[] a={1,2,3};
动态初始化
数组的默认初始化
数组的四个基本特点
长度是确定的,一旦被创建,不可以改变大小;
数组中的元素必须是相同类型。
数组中的元素可以是基本类型和引用类型;
数组变量是引用类型,数组对象本身在堆中;
数组边界
下标的合法区间[0,length-1],如果越界会报错:
ArrayIndexOutOfBoundsException 数组下标越界异常
小结:
数组是相同数据类型(数据类型可以为任意类型)的有序集合;
数组也是对象,数组元素相当对象的成员变量;
数组长度是确定的,不可改变,如果越界会报错;
数组的使用
普通的for循环
Foreach循环
数组做方法入参
数组做返回值
多维数组
Inta [][] = new int[2][5];
二维数组的元素是一维数组;2行5列
Arrays使用
数组的工具类java.util.arrays
查看jdk帮助文档
常用功能:
给数组赋值:通过fill方法
对数组排序:sort方法,默认升序;
比较数组:equals比较是否相等
查找数组:binarySearch方法对排序好的数组进行二分查找;
toString
冒泡排序
package com.array;
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
//冒泡排序
int[] a={1,23,4,23,45,45,6,99};
int[] sort = sort(a);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
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]>array[j+1]){
int temp = array[j];//临时变量temp
array[j] = array[j+1];
array[j+1] =temp;
flag = true;
}
}
if (flag == false) {
break;
}
}
return array;
}
}