A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵顺超 中级黑马   /  2014-7-20 06:50  /  1459 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

11、static关键字:
        (1)静态的意思,用来修饰成员变量和成员函数
        (2)静态的特点:
                随着类的加载而加载
                优先于对象存在
                对所有对象共享
                可以被类名直接调用
        (3)静态的注意事项
                A:静态方法只能访问静态成员
                        为什么:因为静态的内容是随着类的加载而加载,它是先进内存的。
                B:静态方法中不能使用this,super关键字
                C:主方法是静态的
                        public static void main(String[] args)
                        public:公共的意思,是最大权限修饰符。
                        static:由于jvm调用main方法的时候,没有创建对象。
                               只能通过类名调用。所以,main必须用static修饰。
                        void:由于main方法是被jvm调用,不需要返回值。用void修饰。
                        main:main是主要的意思,所以jvm采用了这个名字。是程序的入口。

                        String[]:字符串数组
                        args:数组名

                        在运行的时候,通过java命令给args数组赋值。
                        格式:java MainTest hello world itcast
        (4)静态变量和成员变量的区别
                A:调用方式
                        静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。
                        这个变量属于类。
                        成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。
                B:存储位置
                        静态变量存储在方法区长中的静态区。
                        成员变量存储在堆内存。
                C:生命周期
                        静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。
                        成员变量随着对象的创建而存在,随着对象的消失而消失。
                D:与对象的相关性
                        静态变量是所有对象共享的数据。
                        成员变量是每个对象所特有的数据。
        (5)静态的优点和弊端
                优点:
                对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份
                可直接被类名调用
                弊端:
                生命周期过长,随着类的消失而消失
                访问出现权限,即静态虽好但只能访问静态
        (6)什么使用使用静态呢?
                A:当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
                B:当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。

                静态的生命周期比较长,所以一般不推荐使用。
        (7)静态代码块
                A:它只执行一次,它比main还先执行。
                B:执行顺序
                        静态代码块--构造代码块--构造方法
12、制作API(次重点)
        API(全拼):Application Program Interface 应用程序编程接口。
        (1)类中的内容需要用文档注释。
        (2)使用JDK\bin目录下的javadoc工具。
                格式:javadoc -d 目录 -author -version ArrayTool.java
13、单例设计模式:
        (1)设计模式:
                解决某类问题行之有效的方法,是一种思想,是规律的总结
        (2)用来保证某个类在内存中只有一个对象
        (3)保证唯一性的思想及步骤
                **为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化
                **为了其他程序访问到该类对象,须在本类中创建一个该类私有对象
                **为了方便其他程序访问到该类对象,可对外提供一个公共访问方式

        比如API中的Runtime类就是单例设计模式。

        (4)单例设计模式的两种方式
                A:饿汉式 当类加载的时候,就创建对象。       
                class Student
                {
                        private Student(){}
                       
                        private static final Student s = new Student();
                       
                        public static Student getInstance()
                        {
                                return s;
                        }
                }
                B:懒汉式 当使用的使用,才去创建对象。
                class Student
                {
                        private Student(){}

                        private static final Student s = null;
                       
                        public static Student getInstance()
                        {
                                if(s==null)
                                {
                                        //线程1就进来了,线程2就进来了。
                                        s = new Student();
                                }
                                return s;
                        }
                }
        饿汉式和懒汉式的区别:
                **
                饿汉式是类一加载进内存就创建好了对象;
                懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,
                对象才开始创建。
                **
                懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
                可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,
                所以可以加双重判断来提高程序效率。
                注:开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题
14、Math类的使用(重点)
        (1)数学操作类:该类没有构造函数,方法均为静态的       
        (2)掌握内容
                A:成员变量
                        **E:比任何其他值都更接近e(即自然对数的底数)的double值。
                        **PI:比任何其他值都更接近pi(即圆的周长与直径之比)的double值。
                B:成员方法
                        **static double abs(double a)
                                返回 double 值的绝对值。返回绝对值
                        **static double ceil(double a)
                                返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
                        **static double floor(double a)
                                返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
                        **max:返回两个值中较大的那个
                        **min:返回两个值中较小的那个
                        **static long round(double a) 返回最接近参数的 long。
                          static int round(float a) 返回最接近参数的 int。
                        **static double random()
                                返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
、                        **static double pow(double a, double b)
                                返回第一个参数的第二个参数次幂的值。
                        **static double sqrt(double a)
                                 返回正确舍入的 double 值的正平方根。
15、Random类的使用(重点)
        (1)产生随机数的类
        (2)掌握内容
                A:构造方法
                        **Random() 创建一个新的随机数生成器。
                        **Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。
                B:成员方法
                        **int nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
                        **int nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、
                        在 0(包括)和指定值(不包括)之间均匀分布的 int 值。

5 个回复

倒序浏览
好东西,笔记都记下来了
回复 使用道具 举报
B:存储位置
                        静态变量存储在方法区长中的静态区。
                        成员变量存储在堆内存。

这成员变量是存储在栈内存中的吧
回复 使用道具 举报
黄梁梦想享 发表于 2014-7-20 08:07
B:存储位置
                        静态变量存储在方法区长中的静态区。
                        成员 ...

应该是堆内存啊,他被实例化new在堆内存吧。
回复 使用道具 举报
青偆丶易逝〃 发表于 2014-7-20 08:12
应该是堆内存啊,他被实例化new在堆内存吧。

成员变量时存在栈内存中的,它是指向用new在堆内存中创建出来的对象的内存地址的指针(说句柄也行),它并不是对象!!!它仅仅是一个引用
回复 使用道具 举报
好习惯,进黑马应该没问题了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马