java基础第7天
来源:互联网 发布:行业域名备案 编辑:程序博客网 时间:2024/04/28 15:33
1:代码块
(1)局部代码块 提到代码效率
(2)构造代码块 每new一次执行一次。
(3)思考下面的问题
Person p = new Person();
它在内存中做了哪些事情?
A:将Person.class文件加载到内存中。
B:在堆内存中创建一个对象Person。
C:把Person中的属性进行默认初始化。
D:把Person中的属性进行显示初始化。
E:调用构造代码块(如果没有,不执行这个操作)。
F:调用构造函数进行初始化。
G:在栈内存中声明Person类型的变量P。
H:把堆内存的地址(引用)赋给了栈内存中P。
2:static关键字
(1)静态的意思。可以修饰类的成员(成员变量和成员方法);
(2)静态成员的特点:
A:随着类的加载而加载,生命周期最长。
B:优先于对象存在。
C:被所有的对象所共享。
D:比非静态成员多了一种访问方式。可以通过类名直接调用。而且建议这样做。
静态成员,和非静态成员的区别
|-- 静态跟随类的加载而加载
|-- 非静态成员跟随对象的存在而存在
|-- 静态成员生命周期最长
|-- 非静态成员随着对象消失而消失
|-- 静态成员是对象中的共享数据
|-- 非静态成员是对象的独有数据
静态 弊端 -- 生命周期过长,访问有局限性
静态 好处 -- 数据共享,类名调用
(3)什么时候需要使用static修饰呢?
当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。
简单说:共性用static修饰,特性不用static修饰。(饮水机和水杯。)
(4)注意事项
A:静态方法只能访问静态成员的,不能访问非静态成员;非静态可以访问非静态也可以访问静态(先存在的,不可以访问后存在;后存在的,可以访问先存在的)
B:静态方法中不能使用this,super关键字。
C:main是静态的。
**格式如下:
public static void main(String[] args)
{
}
***由于它被jvm调用,所以权限要足够大,所以用public权限修饰符。
***为了jvm可以不用创建对象直接调用它,所以用static修饰。
***void jvm不需要任何返回。但是方法体结尾默认有return;
***main jvm只认识这个名字。
***String[] 有可能需要传入参数。
***args 字符串数组的名字,为了方便使用。
(5)静态代码块
类中加载流程?
静态代码块--构造代码块--构造方法。
3:静态的应用
工具类ArrayTool
因为使用的都是class文件。所以你应该先编译ArrayTool,然后在编译ArrayTest,最后执行ArrayTest。
但是如果引用的工具类特别多的情况下,这样就很麻烦,所以java提供好的方式:只编译ArrayTest即可。
(其实它首先在classpath下找ArrayTool.class,如果没有,接下来在当前类下找ArrayTool.class文件。
如果还没有,它就会找ArrayTool.java文件,并且进行编译。如果都没有,就报错。)
制作工具说明书:代码中有文档注释,用javadoc解析。
javadoc -d 存放路径 -author -version提取版本 原文件名
E:\java0108\day07>javadoc -d d:\mydoc -author -version ArrayTool.java
-d 后面跟目录
ArrayTool.java 源代码文件
javadoc: 错误 - 找不到可以文档化的公共或受保护的类。
改用public修饰一下即可
4:API(Application Program Interface):应用程序编程接口。
JavaAPI:java的帮助文档。
Math这个类的应用。
5:设计模式
java中有23种设计。
单例设计模式:保证类在内存中只有一个对象。
如果保证类在内存中只有一个对象呢?
(1)控制类的创建,不让外部类来创建类的对象,私有化构造函数。private
(2)在本类中定义一个本来的对象。Student s;
(3)提供公共的访问方式。 public static Student getInstance(){return s}
单例设计模式
优点:不让创建多个对象,浪费系统资源
缺点:当有多个电脑的java虚拟机想利用这个对象时,在这个时刻只能有一个虚拟机使用,而不能很多java虚拟机同时使用
单例写法两种:
(1)饿汉式 开发用这种方式。
class Student
{
private Student(){}
private static Student s = new Student();
public static Student getInstance()
{
return s;
}
}
(2)懒汉式 面试写这种方式。多线程的问题?
class Teacher
{
private Teacher(){}
private static Teacher t;
public static Teacher getInstance()
{
if(t==null)
{
t = new Teacher();
}
return t;
}
}
- java基础第7天
- java基础第7天
- java基础第1天
- java基础第2天
- java基础第3天
- java基础第4天
- java基础第5天
- java基础第6天
- java基础第8天
- java基础第9天
- java基础第10天
- java基础第11天
- java基础第12天
- java基础第13天
- java基础第14天
- java基础第15天
- java基础第16天
- java基础第17天
- java基础第5天
- SQL2005:Excel 导入,使用sp_configure启用 'Ad Hoc Distributed Queries'
- Web应用配置文件热加载
- Android EditText插入字符串到光标所在位置
- java基础第6天
- java基础第7天
- 第三次作业
- linux(redhat系)系统启动级别设置
- EOJ 2574 Principles of Compiler [2009年研究生机试]
- Uva 10125 Sumsets(中途相遇法,高效枚举)
- 装饰模式
- 2013.3.23-3
- Android sqlite 导入txt
- GC原理