增强for循环
public static void main(String[] args){
String[] arr =new String[]{"A","B","C"};
String a=null;
for(String str :arr){
System.out.println(str);
a=str;
}
System.out.println(a); // 打印出C,为arr最后的值
}
循环调用每一个arr[]数组中的值并赋予str // for 的增强循环 相当于foreach 进行集合的遍历
缺点是丢失了索引信息。
增强for循环里的新建变量每次循环完都会释放掉 即str每次循环完后会被释放
int[] arr2=new int[]{1,3,5,7,9};
//int index=0;
for(int i:arr2){
arr2[Arrays.binarySearch(arr2, i)]=i+1;
//index++;
}
System.out.println(Arrays.toString(arr2));
//数组中如果有重复的值则此方法无法使用,可在外部定义索引之后内部++
//Arrarys.binarySearch(数组,值)返回索引。
面向对象
OOP (Object Oriented Programming)
封装 继承 多态
代码可扩展性,可维护性(容错能力)
类(class)用来描述一个对象(Object):对一类事物的描述,是抽象的、概念上的定义
对象是实际存在的个体,计算机中创建了一个内存区域用来存储。
实例化:创建对象的过程。
例如建造房子:
类:建筑图纸
对象:根据图纸造出的房子
实例化:装修
属性-》属性值
方法
对于引用数据类型 变量名存储的是变量在堆中的地址
例子:
Student stu1 =new Studeng();
stu1.age=16;
Student stu2=stu1;
stu1.age=61;
则stu2.age也是61
因为引用数据类型 拿的是内存的地址,stu2=stu1时相当于把stu1的地址给了stu2,所以stu1.age变化时用stu2.age访问 也变化了。
而基本数据类型传递的是值 不会跟着变化
int a1=1,a2;
a2=a1;
a1=2;
则a2=1无变化
this是实例化后的对象本身!!!
stu.changeAge(28); //28是实参
在Student class中
public void changeAge(int age){ //age这里是形参
this.age=age;
}
注意this无法再static类中使用
class Student{
public int age;
}
public class Demo06 {
public static void main(String[] args) {
int _int = 11;
Demo06 d = new Demo06();
d.changeInt(11);
System.out.println("使用完之后,int值变为了" + _int); // 11
Student stu =new Student();
stu.age=24;
d.changeAge(stu);
System.out.println("使用完之后为:"+stu.age);//25
}
public void changeInt(int _int) { //方法结束时销毁形参 所以外面再调用时_int并未发生改变
System.out.println("你传进来的int数字是" + _int);// 11
_int *= 2;
System.out.println("现在的int是" + _int);// 22
}
public void changeAge(Student stu){ //方法结束时只是把地址销毁了 所以改变已经发生了
System.out.println("你传进来的学员年龄是"+stu.age);//24
stu.age++;
System.out.println("修改后年龄是"+stu.age);//25
}
}