Java学习之路-day18

每天回顾是很重要的,知识就是一个反复学习的过程,书读百遍其义自见,每次回看和总结,都会学到一些东西;
1、在进行数组元素之间的比较问题中,选取的比较参照物,一定要是数组容器中的一个元素;
2、方法的形参是基本数据类型时,方法中对传递进来的变量进行修改,不会影响调用者里面对应变量的值,只会影响方法中变量的值;同时局部变量只有在方法中有效,局部变量将会随着方法的出栈而立刻消失;

   例01
   public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a:" + a + "b:" + b);// 10,20
        change(a, b);
        System.out.println("a:" + a + "b:" + b);// 10,20
    }
    public static void change(int a, int b) {
        a = 1;
        b = 1;
        System.out.println("a:" + a + "b:" + b);// 1 ,1
    }

3、方法的形参是引用数据类型时,方法中传递是对应的地址值,对其里面的元素进行修改会影响调用者里面对应的值;

    public static void main(String[] args) {
        int [] arr = {1,2,3,4,5};
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");//1 2 3 4 5
        }
        System.out.println();
        change(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");//10 10 3 4 5
        }
        System.out.println();
    }
    public static void change(int[] arr) {
        arr[0] = 10;
        arr[1] = 10;
    }

【总结】:方法的参数为基本数据类型时,传递的是数据值,方法参数为引用数据类型时,传递的是地址值;
4、当多个引用指向同一对象时,只要其中一个引用对这个对象中的值进行修改,那么所有的引用再次访问这个对象时,就是修改后的值;

例02
	   public static void main(String[] args) {
			Student s = new Student();
			System.out.println(s.name + "---" + s.age);//null---0
			method(s);
			System.out.println(s.name + "---" + s.age);//张三---23
		}
    public static void method(Student s) {
			System.out.println(s.name + "---" + s.age);//null---0
			s.name = "张三";
			s.age = 23;
			System.out.println(s.name + "---" + s.age);//张三---23
		}
例03
	 public static void main(String[] args) {
        Student s = new Student();
        s.name = "张三";
        s.age = 23;
        method(s);//return返回的地址值没有进行接收,所以new的对象没有任何指向,变成垃圾
        System.out.println(s.name + "---" + s.age);//张三--- 23
    }
    public static Student method(Student s) {
        s =new Student();//S对象指向新的对象地址
        s.name = "李四";
        s.age = 24;
        return s;
    }

例04
    public static void main(String[] args) {
        Student s = new Student();
        s.name = "张三";
        s.age = 23;
        s = method(s);//有返回值,同时将地址值赋值给S,此时S的地址将发生改变
        System.out.println(s.name + "---" + s.age);//李四--- 24
    }

    public static Student method(Student s) {
        s =new Student();
        s.name = "李四";
        s.age = 24;
        return s;
    }

5、public和private关键字
【a】public是公共的,修饰的成员变量和成员方法,在任何地方都可以使用;
【b】private是私有的,修饰的成员变量和成员方法只能在本类中使用,其他类不可使用,可以通过set方法进行设置数据,提高代码的安全性;
6、boolean作为成员变量时,get和set的定义

public void setMale(boolean b){
	male  =  b;
}
public boolean isMale(){
	return male;
}

7、匿名对象:只能使用一次
Student s = new Student();
//等号左边的s记录了这个对象的地址值,就是这个对象的地址值
//new Student();这是就是匿名对象
匿名对象不能单独成行使用,单独成行没有任何意义;因为匿名对象的这一行代码完毕之后,就没有对象指引了,在堆内存就变成垃圾了,等待垃圾回收器的回收;

	例05
Student [] stus = new Student[3];
//我们还没有对这个数组进行赋值,那么里面装的是3个null
stus[0].name = "张三";
//那么我们通过stus[0]获得到的不是学生的对象, 是数组的默认
初始化值 null
//拿着null去调用name,编译时会报NullPointerException异常
System.out.println(stus[0].name);//问结果是多少?

【总结】:
【a】引用数据类型的数组,不能直接获取值,必须先赋值才能使用,否则里面装的都是默认值null;
【b】对于基本数据类型的数组,没有进行赋值,那么里面的元素将是对应的默认值;
8、字符串是一个常量,一旦被创建就不可发生改变;
【a】将字节数组转换为String对象
new String(byte[] byte);
【b】将字符数组转换为String对象
new String(char[] char);
【c】获取字符串的长度(个数):“aaa”.length
【d】获取字符串的每个元素:charAt(index)
9、== 可以比较基本数据类型,也可以比较引用数据类型
【a】在比较基本数据类型时,比较的是数据的数值;
【b】在比较引用数据类型时,比较的是数据的地址值;
10、字符串的split使用:
如果按照英文句点“.”进行切分,【必须写"\."(两个反斜杠)】
【.代表的是任意字符】
【+代表的是数量词】
【*代表的是数量词】
如果遇到以上三个字符,使用split切割的时候,要使用\转义 --> 把这些具有特殊含义的字符转义成一个普通的字符;
【学习总结】:ArrayList集合使用remove()方法时,一定要注意,集合随着删除,集合的长度会随之减少;
特别注意在遍历集合的时候,进行删除动作,数组长度会根据删除,元素会向左移动,补全空位,在遍历的操作中,为避免上述情况的发生,通常使用【倒序遍历】array.length-1,但是如果正序遍历,就要进行回退动作,【i–】
今天不再状态,先总结到这,学习之路,加油,共勉,以马内利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值