一、知识点概括
1.数组
2.面向对象
二、例题分析
1.杨辉三角
运行结果:
2.数组综合案例
public class Test2{
static int[] nums = new int[5];//static修饰nums数组后,可以作为全局供该类的所有函数访问
static int size = 0;//有效元素个数
public static void main(String[] args){
insert(0,11);
insert(1,22);
insert(2,33);
insert(3,44);
insert(4,55);
print();
int target = search(100);
System.out.println("您查询的下标位置,对应的值是:"+target);
replace(2,3333);
print();
delete(4);
print();
}
//1.插入 定义一个函数,为nums数组添加新值
public static void insert(int position,int value){
if(size == nums.length){
expand();//当有效元素与数组长度一致时,扩容
}
//判断有效下标
if(position < 0 || position > size){
System.out.println("输入目标有误,请输入0~"+ size +"之间的整数!");
return;
}
//将有效元素,依次向后移动
for(int i = size;i > position;i--){//i = 3;3 > 0 满足3次
nums[i] = nums[i-1];
}
//新值的保存
nums[position] = value;
size++;
}
//2.删除
public static void delete(int position){
check(position);
//1.把目标位置的后一个值向前移动(循环多次,直至有效值全部移动完成)
for(int i = position;i < size-1;i++){
nums[i] = nums[i+1];
}
//2.有效值--
size--;
}
//3.替换功能(将原位置的值,替换为新值)
public static void replace(int position,int value){
check(position);
nums[position] = value;
}
//4.查询功能(通过下标获得对应的值)
public static int search(int position){
if(position < 0 || position > size){
return -1;//含义编码(-1代表没有对应的下标) 暂时处理的方式
}
return nums[position];
}
//5. 扩容 将现有的nums数组进行扩容
public static void expand(){
System.out.println("扩容执行...");
int[] newNums =new int[nums.length * 2];
System.arraycopy(nums,0,newNums,0,nums.length);
//替换nums中的地址,让它指向新数组(长度为10的新数组)
nums = newNums;
}
public static void print(){
for(int i = 0; i < size;i++){
System.out.print(nums[i] + "\t");
}
System.out.println();
}
public static boolean check(int position){
if(position < 0 || position >size){
System.out.println("非法位置,请稍后重试!");
return false;
}else{
return true;
}
}
}
运行结果:
三、总结
Java学习的二周,学习的知识又多了点,学习是一个循序渐进的过程,就像这几天的案例,看似麻烦难做,但只要理清条理,做好注释,分步实现,就会发现它其实并没有你想象中的那么难,学习的时候也会出现旧知识点的模糊、遗忘,这就需要平时勤看笔记,回顾知识点,闲暇空闲之余多敲敲做过的练习题,举一反三,尝试通过其他方式进行实现,以此来锻炼自己的逻辑思维能力,长此以往,总会有效果的吧。最后写一句话鼓励一下自己吧。
认真严谨,天道酬勤,持之以恒,荣辱与共!