文档注释
- 简介:文档注释通过 Javadoc 生成相应的 API 帮助文档,主要用来说明类、成员变量和方法的功能。文档注释只放在类、接口、成员变量、方法之前,因为 Javadoc 只处理这些地方的文档注释,而忽略其它地方的文档注释。
- 文档注释操作:在类、方法等之前输入/**并回车
- javadoc:javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同时形成程序的开发文档了。
输出
Scanner scanner = new Scanner(System.in);
String str=scanner.nextLine(); //nextline能接受空白输入
//凡是属于IO流的,用完要关闭,不然会一直占用资源
scanner.close();
增强for循环
//语法格式
for(变量声明:数组名)
{
}
//实例,主要用于数组、集合
int[] a={10,20,30,40};
for(int x:a)
{
System.out.println(x);
}
//输出结果:10,20,30,40
java内存分析
**堆(Heap):**此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虛拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
**栈(Stack) :**是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型( boolean、byte、char、short、int、float、long、double)、对象引用( reference类型,它不等同于对象本身,是对象在堆内存的首地址)。方法执行完, 自动释放。
**方法区(Method Area):**用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
单例设计模式
饿汉式实现单例设计模式的步骤:
- 1,私有化类的构造器
- 2,在类内部创建类的对象
- 3,提供静态的公共方法,返回类的对象
- 4,在主函数中通过该静态方法创建对象。所创建的都是同一个对象实例
package L3;
/*
单例设计模式:采用一定的方法保证在整个软件系统中,对某个类只能存在一个实例对象
实现方式:饿汉式
*/
public class singletonTest {
public static void main(String[] args) {
//此时B1 B2 B3都是同一个对象。是唯一的实例
bank B1= bank.getB();
bank B2= bank.getB();
bank B3= bank.getB();
}
}
class bank{
//1,私有化类的构造器,这样就不能在类外通过new创建该类的对象了
private bank(){
}
//2,内部创建类的对象
private static bank B=new bank(); //静态方法不能调用非静态变量,所以变量B也要设置为静态
//3,提供静态的公共方法,返回类的对象
public static bank getB(){ //需要把此方法设置为静态,才能不依靠对象而调用方法。
return B;
}
}
懒汉式实现单例设计模式的步骤:
package L3;
//懒汉式实现单例设计模式
public class singletonTest2 {
public static void main(String[] args) {
order o1=order.getinstance();
order o2=order.getinstance();
order o3=order.getinstance();
System.out.println(o1==o2);
System.out.println(o1==o3);
}
}
class order{
//1,私有化类的构造器,这样就不能在类外通过new创建该类的对象了
private order(){
}
//2,声明当前类对象,设为null;
private static order instance=null;
//3,设计一个方法返回该类的实例化对象
public static order getinstance(){
if(instance==null){
instance=new order();
}
return instance;
}
}
饿汉式和懒汉式区别:
-
饿汉式
好处:线程安全
坏处:对象存在生命周期过长
-
懒汉式
好处:延迟对象创建。用的时候才创建,减少资源占用
坏处:线程不安全
//改良版懒汉式 class order{ //1,私有化类的构造器 private order(){ } //2,声明当前类对象,设为null; private static order instance=null; public static order getinstance(){ //改良代码,加入了同步代码块,解决了线程安全问题 if(instance==null) { synchronized (bank.class) { if(instance==null) { instance = new order();} } } return instance; } }