java学习笔记——day2


(文章是根据所学视频上记录的,并不是我个人所完全创出,还有不知道为啥这截屏上传的图片糊的离谱QAQ)
对day1的补充:
两个变量指向同一个数组

int[] arr1={1,2,3};
int[] arr2=arr1;//赋值地址
//两个存的地址一样,都指向同一个数组对象

1、Java内存分配

栈==:方法运行时所进入的内存(main方法),变量也是在这里
:new出来的东西(对象)会在这块内存中开辟空间并产生地址
方法区字节码文件(class文件)加载时进入的内存

问题:
如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会?
出现NullPointerException(空指针异常)

arr = null;//假设arr数组已经定义好
System.out.println(arr);//会显示null不会报异常
System.out.println(arr.length);//会报异常,对象都没清楚,就去调用他的成员

1.1方法

方法是一种语法结构,它可以把一段代码封装成一个功能,以便反复调用
提高了代码的复用性,让程序的逻辑更清晰

去掌握哪些内容?(当然下面不会全都有细写,听课做的笔记较糙)
如何定义方法、怎么去调用方法、方法的内存图、方法的参数传递机制、方法其他常见形式、技术

1.1.1定义

修饰符 返回值类型 方法名(形参列表){
代码
有返回值加return ……;
}

1.1.2方法常见问题

1、方法编写顺序无所谓
2、方法与方法之间是平级关系,不能嵌套定义(可以调用,不能嵌套定义!)
3、void无return。return后面不要加语句了(同一个{}内),它永远不会执行
4、方法不调用就不执行,调用要注意参数匹配
5、方法有返回值调用是要接收结果

1.1.3内存机制:(弹夹,上膛)

1、方法没被调用时,在方法区中的字节码文件中存放
2、方法被调用时,需要进入到栈内存中运行

1.1.4Java的参数传递机制

传递机制:值传递
基本类型的传递:
在传输实参给方法的形参时,并不是传递实参变量本身,而是传输实参变量中存储的值,这就是值传递
形参:以方法为例,就是方法定义时的变量
实参:在方法内部定义的变量

引用类型的传递
传输存储的地址值,地址不会变,但可以去改变其内容

1.1.5方法重载(overload)

同一个类中,出现多个方法名称相同,但形参列表不同,这就是方法的重载

增加可读性

方法重载的识别技巧:
1、上面的定义
2、形参列表的不同指的是形参的个数类型顺序不同,不关心其(参数)名称

return的单独使用:

return;//可以立即跳出并结束当前执行的方法

素数:2到其自己一半的数没有可以整除它
这样理解,循环找素数就可以加快了
这是对素数的另外一种认识,其实本质一样,本来的定义是:不能被除了1和本身以外的数整除的数叫素数。

2、面向对象编程(oop)

这里让我来解析什么较面向对象变成,显然不太可能(菜鸡啊我。。)
别人的解释:“面向就是找,对象就是某个东西,面向对象编程就是找东西来编程”(不必太纠结,往后学多了再去理解)

自己设计对象:先有类,再创建对象

对象在内存中的运行机制:
多个对象的内存图
在这里插入图片描述
第二个对象类似

两个变量指向同一个对象内存图:

Student s1 = new Student();
……
Student s2 = s1;

指向同一个对象,即拿到的地址相同
在这里插入图片描述

3、垃圾回收

当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”
Java存在自动垃圾回收器,会定期进行处理(这里不做详细介绍,知道有这么回事先)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

★Object★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值