Java学习笔记之——static关键字】的更多相关文章

static属于类的,不属于任何一个对象的 static关键字的应用场景: 1.静态代码块:在类下用static修饰的代码块 static{ 代码: } 只能执行一次,是在第一次使用类之前执行 类加载时执行 静态属性也是类加载时开辟空间 可以利用静态代码块,把这个类使用之前需要的准备工作放到静态代码块中 2.static修饰属性: 不再属于对象的,而是属于这个类 当程序运行后,第一使用某个类时,JVM会加载这个类到内存, 程序运行过程中,一个类只加载一次,所以静态属性只有一份 在类的外部使用静态…
static关键字 1.static修饰变量也称静态变量,静态变量存放在静态区被该类的所有对象共享. 例如,定义了一个类class User{static Sring city = "a城"},将类中的一个city属性定义为静态变量.我们创建一个对象use1,然后可以通过user1.city = "b城"修改静态区里面User类的信息.User类中city的初始值就发生了改变,变成了b城.我们再新建一个对象use2,打印user2,会发现user2.city变成了b…
Java学习笔记之---static static不能修饰类,局部变量 (一)静态成员的特征 static+属性  静态属性 无论实例化出来多少个对象,都会共用同一块静态空间,类对象共享 静态成员从第一次被加载之后一直到这个类不再有任何对象被使用,也就是说被彻底的销毁的时候,才会进行资源的释放,生命周期长 public class Pig { String name; static int price; } class PigTest{ public static void main(Strin…
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静态变量 static修饰的变量为静态变量 在创建对象时,静态变量位于方法区中,而非像实例变量一样,位于堆内存中 一个类的所有对象共用相同静态变量,通过类名来调用静态变量,通过实例来调用虽然也符合语法,但不推荐 示例:静态变量的一个用法 class Employee{ private static i…
(阅读<C++ primer plus>可知 C++的static关键字跟Java还是很类似的) 为什么需要static关键字:在文件A中定义的非局部变量language,在文件B中可以通过 extern string language进行引用; 这样一来,在B文件中就可以使用language了,而且B中的language和A中的language是同一个变量,指向同一个地址.如果不加extern,直接在B文件中申明string language是会报错的,因为A文件中的language是外向链…
static关键字   作用:修饰符,用于修饰成员<成员产量,成员方法>     1'被修饰的成员产量只有一份.     2'被修饰后的成员多了一种方式的访问,除了可以对象调用外,还可以被类名直接调用.       特点:   1'随着类的加载而被加载.     2'优先于对象存在.     3'被所有对象所共享,可以直接   被类名所调用.     随着类加载存储在内存数据区里.   实例变量随着对象的建立存在于堆内存.           生命周期:   1'类变量生命周期最长,随着类的消…
[14-9]面向对象-final关键字 /* 继承的弊端,打破封装性. 不让其他类继承该类,就不会有重写. 怎么能实现呢?通过Java中的一个关键子来实现,final(最终化). [final关键字] 是一个修饰符,可以修饰类,方法,变量(成员变量,局部变量,静态变量). [特点] 1,final修饰的类是一个最终类,不能派生子类. 如果类中出现部分可以重写,部分不可以,怎么办?只要让指定的方法最终化就可以了. 2,final修饰的方法是最终方法,不可以重写. 3,final修饰的变量是一个常量…
一.为什么要用synchronized关键字 首先多线程中多个线程运行面临共享数据同步的问题. 多线程正常使用共享数据时需要经过以下步骤: 1.线程A从共享数据区中复制出数据副本,然后处理. 2.线程A将处理好的数据副本写入共享数据区. 3.线程B从共享数据区中复制出数据副本. 如此循环,直到线程结束. 假如线程A从共享数据区中复制出数据副本然后处理,在还没有将更新的数据放入主内存时,线程B来到主内存读取了未更新的数据,这样就出问题了. 这就是所谓的脏读,这类问题称为多线程的并发问题. 举个具体…
1.static可以用于修饰成员变量.方法以及块,并不会改变类中成员的权限修饰,如:private修饰的成员变量,类外只能类名或非私有方法调用,而不能使用对象名调用. 2.static方法和成员变量,可使用类名直接调用,而不需要实例化:类名.方法名();类名.变量名(); 也可以实例化后,使用对象名调用. 3.static方法(静态方法): 3.1 静态方法中,没有this,因为没有创建对象: 3.2 静态方法中不能调用非静态成员变量.方法,但非静态方法可以调用静态成员变量.方法: 4.stat…
supe主要是调用父类中被重写的方法及属性. 用下列代码那说明: package cn.hcf.TestSuper; public class TestSuper { public static void main(String[] args){ Student stu = new Student(); stu.task(); } } class Person{ int ID; void task(){ ID = 100; System.out.println("工作"); } } c…