JAVA学习笔记
- 1学习易错点:
- 2学习内容:
- 3具体知识点:
- 054.IDEA初始项目Helloworld
- 055 IDEA项目结构
- 056 IDEA中内容辅助键和快捷键
- 057 idea模块的操作
- 058 数组的定义
- 059 数组动态初始化
- 060
- 061 JAVA内存分配
- 062 单个数组的内存图
- 63 多个数组的内存图
- 64 多个数组指向相同的内存图
- 65 数组静态初始化
- 66 数组操作易错点
- 67 快捷获取数组长度![在这里插入图片描述](https://img-blog.csdnimg.cn/20210530131523700.png)
- 68
- 69 方法概述
- 70 方法 的定义和调用
- 71 方法调用过程
- 72
- 73 带参数方法定义和调用
- 74 形参和实参
- 75
- 76 带返回值方法的定义和调用
- 77
- 78 方法的注意事项
- 79 方法的通用格式
- 80 方法重载两个方法
- 81
- 82 方法的参数传递
- 83方法的参数传递(引用类型)
- 84 数组遍历
- 85
- 86 debug
- 100 类的定义
- 101 对象的使用
- 103 单个对象内存图
- 104 多个对象内存
- 105 多个对象指向相同
- 106 什么是成员变量与局部变量
- 封装-private关键字
- 109 this关键字
- 110 this内存原理
- 111 封装
1学习易错点:
1.数组名就是堆内存中的存放数组的地址。
2.当有多个数组指向同一地址后,修改任意一个数组的值,指向同一地址的其他数值的值也响应改变。
3.注意与c语言中类似的是,在方法调用过程中实际上是把实参的值给形参,因此直接再方法中修改形参的值对实参没有改变。如果传入的是一个地址,那么经过一定操作可以达到修改值的目的。详见82 83.
4.数组定义方法详见59
5.Java中的类可以与c语言中的结构体类比看待,不同的是Java中的类中可以定义变量和方法,而c语言结构体中只能定义变量不能定义函数(也许可以)。
6. Java中可以直接定义字符串,写法为:String A;初始默认值为null.
7. 对于对象的的内存图可以用数组的内存来方便理解。
2学习内容:
JAVA基础课 JAVA基础课
3具体知识点:
054.IDEA初始项目Helloworld
1.JAVA程序创建流程:创建空项目,在空项目下创建了模块,在模块里面创建了一个包,包里面新建了一个类,然后就可以书写代码了。
2.class文件在目录的out文件夹下
055 IDEA项目结构
056 IDEA中内容辅助键和快捷键
格式化:ctrl+alt+L 格式化不是清空代码,而是使代码美化。
057 idea模块的操作
1.模块的添加
在file中点new,以及如果直接修改模块名称第二个目录不会变,所以直接修改蓝框所在,模块的名字会跟着改。
058 数组的定义
两者没有本质区别。一般使用第一种,因为读起来的意思是int了一个数组名字叫arr,而第二种读起来的意思是int了一个变量,叫arr的数组
059 数组动态初始化
动态初始化:程序员只决定数组元素的长度,系统分配元素初始值(通常为null,0等)。
上面图片右边的意思:new = 申请, int[3]长度为3的int形数组。 注意此写法与c语言有很大区别 不能在左边直接写 int[20] arr;
060
061 JAVA内存分配
第一行的sout出来的是arr的地址(其原理是吧堆内存中new出来的数组的地址给arr,数组名其实就是一个地址),剩下sout出来的是对应的数组值。
2.以前不知道的:
062 单个数组的内存图
修改数组值修改的是堆内存中的数值。
63 多个数组的内存图
64 多个数组指向相同的内存图
当有多个数组指向同一地址后,修改任意一个数组的值,指向同一地址的其他数值的值也响应改变。
65 数组静态初始化
简化写法虽然简化了格式,但是还是有申请内存空间的动作的。
66 数组操作易错点
1.索引越界
2.空指针异常,比如:
67 快捷获取数组长度
68
69 方法概述
JAVA中的方法与C语言的函数是相对应的概念。
70 方法 的定义和调用
在JAVA中方法的定义不用放在主函数前面,直接全部写在主函数后面即可。
71 方法调用过程
72
73 带参数方法定义和调用
与c语言相同
74 形参和实参
75
76 带返回值方法的定义和调用
定义格式:
77
78 方法的注意事项
1.方法不能嵌套定义
2.void返回值可以写return,但是是单独写return; 后面不加数据
79 方法的通用格式
80 方法重载两个方法
方法重载看的是方法名和参数,与返回值无关
左上角是因为只有返回值不同,右下角是因为虽然看起来符合方法重载的定义但是两个函数在两个类中。
81
82 方法的参数传递
就是c语言的函数的相互调用 ,注意与c语言中类似的是,在方法调用过程中实际上是把实参的值给形参,因此直接再方法中修改形参的值对实参没有改变。
最后num的值还是100,并没有改变。
83方法的参数传递(引用类型)
与c语言类型,如果传入的值不是一个直接的参数,而是一个地址(下面图片中的数值名就是一个地址),那么更改地址指向的元素的值,那么这样就可以修改值了。
84 数组遍历
新语句:
System.out.println(内容);//输出内容并换行
System.out.print(内容); //输出内容不换行
System.out.println(); //起到换行的目的
85
86 debug
1.加断点
2.运行加断点的程序
3.看debug窗口可以观察到代码执行到哪里了和代码执行过程中变量的变化,console窗口可以看程序执行过程中的结果展示
4.debug窗口点step into或快捷键f7接着执行程序。
//再次点击断点即可删除断点,如果想一次删除全部窗口需要在debug窗口操作。
…
100 类的定义
此处的方法指的是没有static的方法!! 如:
个人:Java中的类可以与c语言中的结构体同等看待,不同的是Java中的类中可以定义变量和方法,而c语言结构体中只能定义变量不能定义函数(也许可以)。同时以前学的录入函数和产生随机数是不是也与类有千丝万缕的联系呢?
101 对象的使用
103 单个对象内存图
与c语言一样,将结构体和数组类比就可以比较简单的弄懂对象内存图
104 多个对象内存
105 多个对象指向相同
106 什么是成员变量与局部变量
成员变量随对象存在消失而存在消失,//有默认的初始化值
局部变量随着方法的调用而存在,方法调用完毕而消失。//没有默认的初始化值,必须赋值后才能使用。
封装-private关键字
private关键字的作用是可以保护对象中的数据,防止在其他类对数据直接进行修改,发生意料之外的错误。比如年龄不能是负数,那么久可以在类的方法中对setAge(int a){}中的a进行限制,以防a出现负值
109 this关键字
this关键字的目的就是与set/get方法搭配使用,达到解决变量重名的问题,从而使代码更加美观。