黑马程序员技术交流社区

标题: suweifeng的笔记4 [打印本页]

作者: suweifeng    时间: 2016-1-11 23:37
标题: suweifeng的笔记4
1.static (静态)关键字:是一个修饰符,用于修饰成员
                           (成员变量,成员函数)
                        修饰后的成员不在存在内存当中
                        被对象所共享同一个静态数据
                        既可以被对象调用,也可以被内存调用
                        静态变量存储于方法区(共享区,数据区)
2.Static特点:
  1.随着类的加载而加载,随着类的消失而消失
    类一被调用,就在内存方法区开辟空间
  2.优先于对象存在
  3.被所有对象所共享
  4.可以直接被类名所调用

3.实例变量和类变量的区别
  1:类变量随着类的加载存在于方法区中,实例变量随着
     对象的建立而存在于堆内存中
  2:生命周期:
     类变量生命周期最长,随着类的消失而消失
     实例变量生命周期随着对象的消失而消失
   
     当静态变量(类变量)数值被更改时,下次被调用时为更改值
     而实例变量数值被更改时,下次被新对象调用是为初始值
4.方法:1.静态方法只能调用静态成员 静态方法不可以出现this super字样
        2.非静态方法可以静态成员
5.main:主函数public static void main(String[] args)
       是一个特殊的函数,作为程序的入口,可以被jvm调用
  主函数的定义:
  public:代表着该函数的访问权限最大
  Static:代表主函数随着类的加载已经存在了
  void:没有具体的返回值
  main:不是关键字,但是一个特殊的单词,可以被jvm识别
(String[] arr):函数的参数,参数的类型是一个字符串数组
  虚拟机调用的主函数格式
  public static void main(String[] args(可变)){}
  Jvm在调用主函数是,传入的是new String[0]
6.java +类 +xx xxx xxxx 将数值存储到主函数的数组中
7.当功能没有访问对象中的数据时可以使用静态变量
8.工具中没有调用对象中的特有数据,可以用静态修饰符对函数
进行简化,直接通过类名调用,而不需要多次定义对象
9.如将功能对象发送给其他人,其他人只要将文件设置到classpath路径下,就可以
  使用该功能模板,但并不能了解功能的具体功能
10.制作程序的说明书,java的说明书通过文档注释来完成
11.对文档注释“@”可以被javadoc识别
   @author 张三
   @version V1.1
   javadoc -d(根目录) myhelp(没有的话自动建立) -author(提取类中的注释中特定数值)
   类前面必须加public,
   privite中不会显示在文档中
12.一个类默认会有一个空参数的构造函数
  这个默认的构造函数的权限和所属类一致
  如果类被public修饰,那么默认的构造函数,也没有public修饰
  默认构造构造函数的权限随着类的变化而变化
13.API文档 应用程序接口
14.静态代码块:格式static{ 执行语句 }
   特点:随着类的加载而执行,只执行一次,并优先于主函数
         用于给类初始化
   顺序:静态代码块>默认初始化>显示初始化(定义时赋值)>构造代码块>构造函数
15.person p=new person("shangsan",20)
   该句话都做了什么事情?
   1.会先找到person.class文件并加载到内存中
   2.执行该类中的static代码块
   3.开辟内存空间,分配内存地址
   4.坐在堆内存中建立对象的特有属性,并进行默认初始化(name="null",age=0)
   5.对属性进行显示初始化 String="haha";
   6.对对象进行构造代码块初始化 {name="haha";}
   7,对对象进行对应的构造函数初始化 不同对象不同值
   8.将内存地址赋给栈内存中的p变量。
16.非静态变量调用过程,现在方法区构建方法,栈内存
中构建相应变量并把隐藏this指向堆内存,先改变栈内存中的变量之后
改变堆内存的变量
17.同一类中的静态函数可以调用,需在前面加类名
class name
(public static void show(){
  name.method;
}
public static void show(){
  System.out.print("aa");
}

18.设计模式:解决某一类问题最行之有效的方法
java中的23种设计模式
单例设计模式:解决一个类在内存只存在一个对象
需要保证对象唯一:
1.为了避免其他程序过多建立该类对象,先控制禁止其他程序建立该对象
2.还为了让其他程序可以访问到该对象,在本类中自定义一个对象
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
方法:
1.将构造函数私有化
2.在该类创建一个本类对象
3.提供一个方法可以获取到该对象
对于事物描述不做改变,当需要对着事物的对象保证在内存中唯一时增加这
三步(饿汉式)single类一进内存就已经创建好了对象,开发一般用这种
private single1(){}
private static single1 s=new single1();
public static single1 Getname(){
                return s;}
第二种方法(懒汉式)延迟加载single类进内存对象还没有存在,只有调用了Getname方法是,才建立对象
有可能出现问题
private static single s=null;
private single(){}
public static single Getname(){
if(s==null)
        s=new single{};
return s;
}
synchronized判断只有单个数进入程序
改进:
if(s==null){
Synchronized(single.class){
        if(s==null)
          s=new single();
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2