Java基本语法:
跳转控制语句:
break(在switch语句里用于结束语句 在循环里面使用结束当前循环)
continue(跳过当次循环)
return(方法时讲)
数组:
可以存储多个相同数据类型元素的容器
定义格式:
1.数据类型[] 数组名 = new 数据类型[元素个数/数组长度]
int[] arr = new int[3];//指定长度
数据类型 名称 = 初始化; //定义变量
变量定义分为声明和初始化两个过程
可以分为声明和初始化两个过程
通过唯一的内存地址(数组名)来确定数组,java自动给数组元素进行编号(下标),从0开始。由内存地址值和下表就能唯一确定数组里元素[下标]
2.数据类型[] 数组名 = new 数组类型[]{元素值1,元素值2,...};
int[] arr = new int[]{1,2,3}//给定数组元素值来确定数组长度不用给定长度值
可以分为声明和初始化两个过程
3.数据类型[] 数组名 = {元素值1,元素值2,...};
int[] arr = {1,2,3};//给定元素值长度确定
new------在内存里开辟空间
public class ArrayDemo {
public static void main(String[] args) {
//1.定义数组
int[] arr = new int[3];
//给数组元素赋值
//给数组的第一个元素赋值为10
arr[0] = 10;
//声明
int[] arr1;
//初始化
arr1 = new int[5];
//输出数组名(数组地址值)
System.out.println(arr);
//输出数组元素值
System.out.println(arr[10]);
//2.定义数组
int[] arr = new int[]{1,2,3};
//声明
int[] arr1;
//初始化
arr1 = new int[]{3,4,5};
//3.定义数组
int[] arr = {1,2,3};
//声明
int[] arr1;
//初始化---报错,没有开辟内存空间无法存储元素
arr1 = {3,4,5};
}
}
java的内存
栈:存储的是变量(暂且),当存储内容使用完毕之后会立即清除。
堆:存储的是对象,当存储内容使用完毕之后,等到某个时刻来进行回收。
方法区(面向对象)
本地方法栈(不讲)
寄存器(程序计数器)
系统默认初始值
(byte、short、int—0)、(char—’\u0000’ \u代表u16进行编码)、(long—0L)、(float—0.0F)、(double—0.0)、(boolean—false)、(引用数据类型—null)
一个数组内存图
两个数组内存图
三个数组内存图
数组应用
1.遍历—一次吧数组元素进行输出
增强for循环
package day05;
import java.util.Arrays;
/**
* 数组遍历
* @author tarena
*
*/
public class ArrayBianLi {
public static void main(String[] args) {
//定义数组
int[] arr = {2,4,1,6,9,5};
//普通for循环实现遍历
//数组名.length-----返回数组长度值
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//增强for循环
//(元素类型 变量名:要去遍历的数组名)
//把数组元素拷贝给新变量来输出新变量值
for (int i : arr) {
System.out.println(i);
}
//导包Arrays
System.out.println(Arrays.toString(arr));
}
}
2.最值—求出数组元素的最大/小值
package day05;
/**
* 求最值
* @author tarena
*
*/
public class ArrayMaxDemo {
public static void main(String[] args) {
//定义数组
//int[] arr = {4,2,1,7,9,5,};
int[] arr = {1,2,3,4,5,6,7,8,};
//选取第一个元素做参照物
int max = arr[0];
//遍历数组
for (int i = 0; i < arr.length; i++) {
//判断大小
if(arr[i] > max){
max = arr[i];
}
}
System.out.println(max);
}
}
3.查找—给定查找数返回数组第一次出现下标值
package day05;
/**
* 数组查找
* @author tarena
*
*/
public class ArraySearchDemo {
public static void main(String[] args) {
//定义数组
int[] arr = {1,7,3,2,5,8};
//给定查找数
int num = 5;
//遍历数组,依次比较
for (int i = 0; i < arr.length; i++) {
//判断数组元素是否和查找数相等
if (arr[i] == num) {
System.out.println(i);
//已经找到下标---结束循环
break;
}
}
//二分查找
//提供三个下标
int min = 0;
int max = arr.length;
int mid = (min + max)/2;
//循环范围不确定
while (arr[mid] != num) {//中间下表对应的元素值和查找数不相等
//如果查找数nim大于中间下表对应的元素值
if(num > arr[mid]){
min = mid +1;
}
//如果num小于中间下标对应的元素值
if (max < arr[mid]) {
max = mid - 1;
}
//查找数不在数组判断条件
if(min > max){
System.out.println("查无此数");
//结束循环
break;
}
//重新计算中间下标
mid = (min + max)/2;
}
//输出
if(max >= min){
System.out.println(mid);
}
}
}
4.排序—给元素排列顺序 冒泡、选择
package day05;
import java.util.Arrays;
/**
* 冒泡排序
* @author tarena
*
*/
public class ArrayMaoDemo {
public static void main(String[] args) {
//定义数组
int[] arr = {6,1,7,3,9,2};
//通过嵌套循环实现
for (int i = 1; i < arr.length; i++) {//外层循环--控制轮数
for (int j = 1; j <= arr.length - i; j++) {//内层循环-控制参与比较的元素范围
//两两比较 j j+1 j-1 j(都可以)
//升序排序---小的在前面
if (arr[j-1] > arr[j]) {
//交换值
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
//
System.out.println(Arrays.toString(arr));
}
}
package day05;
import java.util.Arrays;
/**
* 选择排序
* @author tarena
*
*/
public class ArrayChooseDemo {
public static void main(String[] args) {
//定义数组
int[] arr = {6,1,7,3,9,2};
//通过嵌套循环实现
for (int i = 1; i < arr.length; i++) {//外层循环--控制轮数
for (int j = i; j < arr.length; j++) {//内层循环--控制参与比较元素范围
//选择定点元素和后续元素进行比较
//升序排序---小的在前面
if (arr[i-1] > arr[j]) {
//交换值
int temp = arr[i-1];
arr[i-1] = arr[j];
arr[j] = temp;
}
}
}
//java提供的排序
Arrays.sort(arr);
//输出
System.out.println(Arrays.toString(arr));
}
}