day09-课堂笔记
1、关于Java的集成开发环境【集成开发环境简称:IDE】
1.1、什么是集成开发环境?
* 集成开发环境讲究一站式开发,使用这个工具即可。有提示功能,有自动纠错功能。
* 集成开发环境可以让软件开发变的更简单、更高效。
* 没有IDE工具:
- 需要安装JDK、需要配置环境变量、需要手动的将java源文件编译生成class字节码文件
- java源程序出错之后还没有提示
- 没有自动提示功能等。
* 有IDE工具:
- 不需要独立安装JDK【IDE中已经集成】
- 不需要手动配置环境变量
- 不需要使用javac命令对java源文件进行编译
- 并且java源程序编写语法错误马上又提示
- 使用IDE工具有很多代码不需要写,自动生成了。
1.2、java有哪些比较牛的IDE呢?
* eclipse (myeclipse)【最多】
* Intellij IDEA【上升的趋势】
* NetBeans
* JBuilder
.......
目前阶段我们使用的是:myeclipse10
2、讲解myeclipse的使用:
* workspace:工作区
- 当myeclipse打开的时候,大多数都是会提示选择工作区
- 这个工作区可以是已存在的工作区,也可以是新建的工作区
- 选择工作区之后,将来编写的java代码,自动编译的class文件都会在工作区中找到
- myeclipse可以开启两个甚至更多的会话,每一个会话对应不同的workspace
* 在workspace工作区当中有一个文件夹:.metadata
- 在该文件夹当中存储了当前myeclipse的工作状态
- 将.metadata文件夹删除之后,下一次再次进入这个工作区的时候,是一个全新的开始。
但是会发现这个IDE工具当中所有的项目丢失了,没关系,这里只是丢失的myeclipse的项目,
硬盘上真实存储的项目不会丢失。
* 打开myeclipse之后:窗口
- 窗口双击可以最大化或者还原
- 窗口可以拖动
- 窗口不小心关闭了,可以再次打开:
window --> show view --> Other --> 输入自己要找的窗口
* myeclipse为程序员准备了很多不同的布局方式:
- 企业级开发:JavaEE开发的专用布局- MyEclipse Java Enterprise
- 普通java开发的:JavaSE开发的专用布局 - Java
- 怎么切换布局?
* myeclipse右上角
* 当这个布局被破坏之后想复原?
- window --> Reset...p...
* 重点的窗口介绍
* Package Explore / Navigator / Project Explore :可以看到java源文件
* Console:控制台窗口
* 工作区workspace中基本的单元是:Project(工程/项目)
* 使用myeclipse创建工程:
- 在Package Explore窗口当中点击右键 --> new --> Java Project【JavaSE工程】:当然还有其它方式
比如,点菜单栏的new,或者在其下的图标的下拉键
* 指定java工程的名称:一般全部小写
* 指定java工程的存放目录
* Java的运行时环境:JRE的配置【可以选择使用myeclipse自带的JRE,也可以选择程序员自己安装的JRE】
* Project layout : 工程的目录布局
- 多数情况下都是选择:两个独立的文件夹存储源码(src)和字节码(bin)【默认不用管】
* 在src目录下新建软件包:package机制后面讲,目前先用着。
- 在src目录上点击右键 --> new --> package
- 给package起名:com.bjpowernode.javase;
- 包package是java中语法的一部分。后面讲
* 在软件包下新建一个java类:
- 在包上点击鼠标右键 --> new --> class【红色打勾,生成main方法】
- 显示行号:在java源程序的左侧栏上点击鼠标右键:show line number
- 设置字体大小:
window --> Preferences --> 输入font --> colors and fonts --> Basic --> Text Font --> Edit
* 【关于myeclipse中常用的部分快捷键】
- ctrl + d 删除一行
- alt + / 自动补全 (/是斜杠,\ 是反斜杠)
比如,输入main 后alt + / 回车补全主方法
输入/* 后alt + / 回车补全注释
输入for后alt + / 回车补全循环
.....
- ctrl + 1 纠错(不用点红色叉号了)
- ctrl + alt + down 复制本行,粘贴到下一行
- Ctrl + Shift + F 格式规范化
....
* 【注意:myeclipse当中的java源代码有的时候不保存是不会编译的。所以时刻记住:ctrl + s】
* myeclipse当中,出现红色下划线的表示编译错误,语法错误。
鼠标停留在红色的下划线上面会有错误提示信息。
并且点击左边的×,可以进行纠错。【当然也可以光标停留在红色下划线上面: ctrl + 1】
* 有的时候程序出现黄色的下划线,表示警告,编译可以通过。
* 快捷键怎么设置?
window --> Preferences --> keys
* 怎么运行一个带有主方法的java程序?
* 在java源程序的任何位置点击鼠标右键 --> Run As --> Java Application
3、面向对象的封装性 【面试可能会问封装的好处】
【电视机装外壳和不装外壳,显然装外壳更安全】
【封装的步骤】
【有 static 关键字的方法调用:类名 . 方法名(实参)】
【无 static 关键字的方法调用:引用 . 方法名(实参)】
【定义用户类,属性私有化】
【访问入口写在自身类中】
【测试】
【快速封装】
在弹出窗口进行以下操作
【上图中右上角可以自主选择】
快速封装实现
4、构造方法
【这里的返回值类型是构造方法所在类的类型,这样理解:string是字符串类型,本身也是一个类】
=======================================================================================================================
【构造函数本身】
【调用构造函数】
【结果有输出】
==================================================================================================
【构造方法的重载】
【构造方法的重载调用】
【深入理解:创建对象时,若调用无参数构造方法,所创对象的各属性值为默认值(0或null...)
而调用有参构造方法时,所创对象的各属性值为给定的参数值】
【从上面和下面两部分得出:构造方法和无static方法的区别是,前者非但不写static,连定义方法时的返回类型都不用写】
======================================================================
【PS:两星号的注释会生成帮助文档,有利于开发】
【小知识点】
1.查看调用的方法是哪个
按住ctrl,鼠标移动至调用的方法名上,出现下划线后,单击,自动跳转至方法体
2.方法较多时如何查看,查找?
Ctrl + O
3.批量写代码,改代码
====================================================================================================================
【构造方法的作用】
【构造方法:即构造对象的方法,该方法出现在定义的类中,构造方法在被含参或无参调用时,给对象的实例变量赋值(给的参数值或默认值)】
【快速构造】
====================================================================================================
5、对象和引用:
5.1、对象和引用的概念?
* 对象:目前在使用new运算符在堆内存中开辟的内存空间称为对象。
* 引用:是一个变量,不一定是局部变量,还可能是成员变量。引用保存了内存地址,指向了堆内存当中的对象。
* 所有访问实例相关的数据,都需要通过“引用.”的方式访问,因为只有通过引用才能找到对象。
* 只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。
class Student{
Computer com; //com是一个引用【实例变量】
public static void doSome(){
Computer cc; //cc是一个引用【局部变量】
}
}
5.2、参数的传递?
主要研究和学习的是方法在调用的时候,涉及到参数传递的问题,到底是怎么传递数据的呢?
值传递。
int i = 10;
int j = i; //i传递给j,实际上只是将i变量中保存的10传递给j了,j实际上是一块全新的内存空间。例1
User u = 0x1234;
User u2 = u; //u传递给u2,实际上是将0x1234这个值赋值给u2了,u和u2实际上是两个不同的局部变量,
//但是它们这两个变量指向堆内存中同一个java对象。例2
【例1】
【内存分析】
【本例的参数传递只和栈有关】
【例2】
【注意到u.age++而不是u++。殊途同归,一种途径事先改变了地址指向内存空间的值,从另一个方法去读取,结果一样】
【本例的参数传递涉及到了堆内存的地址】
---------部分摘自B站动力节点教育集团