day06 笔记
一.数组定义
定义数组:
数组类型 [] 数组名 = new 数组类型 [数组元素个数];
简便形式:数据类型 [] 数组名 = {数组元素};
二.数组里面的元素的交换(最大值和最小值)
里面的数组元素交换的使用中间变量
public static void main(String[] args) {
//定一个数组
int [] nums = {5,52,24,78,35};
System.out.println("最大值:"+getMax(nums));
System.out.println("最小值:"+getMin(nums));
}
public static int getMax(int [] number) {
//定义一个擂主
int max = 0;
//进行非空验证
if (number != null && number.length>0) {
max = number[0];
//使用for循环进行比较
for (int i=0;i<number.length;i++)
if (number[i]>max) {
max = number[i];
}
}
return max;
}
public static int getMin(int [] number01) {
int min = 10;
if (number01 != null && number01.length>0) {
min = number01[0];
for (int i=0;i<number01.length;i++) {
if (number01[i] < min) {
min = number01[i];
}
}
}
return min;
}
注意:数组在进行在使用for循环的时候,需要进行非空验证
三.数组排序
public static void main(String[] args) {
int [] arrays = {2,5,3,8,4};
//把排好序的数组转换为字符串
String str = Arrays.toString(sortArrys(arrays));
System.out.println(str);
}
//冒泡排序
/**
*
* @param nums 没有排序的数组
* @return 排好序的数组
*/
public static int [] sortArrys(int [] nums) {
//第一个for循环控制比较的轮数
for (int i=0;i<nums.length;i++){
//第二个for循环控制每一轮的比较次数
for (int j=0;j<nums.length-1-i;j++){
if (nums[j] >nums[j+1]) {
//设置中间变量 进行两个值的交换
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
return nums;
}
注意:使用两个循环
第一个循环 控制轮数
第二个循环 控制每一轮的比较次数
四.数组插入数据
//数组中插值
public static void main(String[] args) {
char [] ch = new char[6];
ch[0] = 'a';
ch[1] = 'b';
ch[2] = 'c';
ch[3] = 'e';
ch[4] = 'f';
//插入的值 char元素可以直接进行比较对应ascll码比较
char number = 'd';
//使用index来记录找到的索引
int index = -1;
//寻找插入值的索引的位置
for (int i =0;i< ch.length;i++){
if(ch[i] > number) {
index = i;
break;
}
}
//进行值往后移动
for (int j= ch.length-1;j>index;j--) {
ch[j] = ch[j-1];
}
//进行值的插入
ch[index] = number;
//打印
System.out.println(ch);
}
注意:在比的时候,原来是数组长度是比后面加入的数组的长度小1的,
如果是先定义两个数组,其中一个数组比原来的数组少一个,在生成新数组的时候,在加入值的地方注 意索引,还有在新数组的最后一个数组元素的变化需要菜系判断;例如:
public static void main(String[] args) {
//原字符顺序:a, b, c, e, f, p, u, z
//待插入字符:m
//插入字符的下标是:5
//原数组
char [] ch = {'a', 'b', 'c', 'e', 'f', 'p', 'u', 'z'};
//插入的数组
char [] chars = new char[9];
//插入的数的信息
char temp = 'm';
int index = 5;
for (int i=0;i<ch.length;i++){
if (i == index) {
chars[i]=temp;
}else if (i<index){
chars[i] = ch[i];
//当第6个下标开始
} else if (i<ch.length) {
chars[i] = ch[i-1];
//注意
}if (i== ch.length-1) {
chars[i+1] = ch[i];
}
}
System.out.println(Arrays.toString(chars));
}
五.JVM内存划分五块
栈:所有的局部变量 还有运行方法时候,都会在栈里面开辟空间
特点:先进后出
堆:所有 new的资源 数组 对象 都是堆内存中存在(重点)
方法区:所有的字节码文件(class文件)静态资源 存在方法区
本地方法区:调用c或者是c++代码的native
程序计数器:主要是控制代码的执行