static关键字修饰的属性及调用顺序

 1 package Day11;
 2
 3 public class StaticInitialization {
 4     static Table table=new Table();  //Bow11 Bow12 Table() f1(1)
 5     static Cupboard cupboard=new Cupboard();//Bow14 Bow15 Bow13 Cupboard() f1(2)
 6     public static void main(String[] args) {
 7         System.out.println("Creating new Cupboad() in main");//Creating new Cupboad() in main
 8         new Cupboard();//Bow13 Cupboard() f1(2)
 9         System.out.println("Creating new Cupboad() in main");//Creating new Cupboad() in main
10         new Cupboard();//Bow13 Cupboard() f1(2)
11         table.f2(1);//f2(1)
12         cupboard.f3(1);//f3(1)
13     }
14 }
15 class Cupboard{
16     Bow1 bowl3=new Bow1(3);
17     static Bow1 bow4=new Bow1(4);
18     public Cupboard() {
19         System.out.println("Cupboard()");
20         bow4.f1(2);
21     }
22     void f3(int marked){
23         System.out.println("f3("+marked+")");
24     }
25     static Bow1 bow5=new Bow1(5);
26 }
27 class Bow1{
28     public Bow1(int marked) {
29         System.out.println("Bow1("+marked+")");
30     }
31     public void f1(int marked){
32         System.out.println("f1("+marked+")");
33     }
34 }
35 class Table{
36     static Bow1 bow1=new Bow1(1);
37     static Bow1 bow2=new Bow1(2);
38     public Table() {
39         System.out.println("Table()");
40         bow2.f1(1);
41     }
42     void f2(int marked){
43         System.out.println("f2("+marked+")");
44     }
45 }
 1 package Day11;
 2
 3 import java.util.Arrays;
 4
 5 public class StaticDemo {
 6     static People p=new People();
 7     public static void main(String[] args) {
 8         System.out.println("=======================");
 9     }
10 }
11 class People{
12     Student stu1=new Student(1);
13     public People(){
14         System.out.println("***************");
15     }
16 }
17 class Student{
18     static People p=new People();
19     public Student(int a){
20         System.out.println("+++++++++++++++++"+a);
21     }
22 }

打印结果:

+++++++++++++++++1
***************
+++++++++++++++++1
***************
=======================

时间: 2024-10-14 06:30:29

static关键字修饰的属性及调用顺序的相关文章

static关键字修饰属性

static 静态的,可以修饰属性,方法,代码块(或初始化块) , 内部内 非static修饰的属性(实例变量):各个对象各自拥有一套各自的副本 static修饰属性(l类变量): 1.由类创建的所有的对象,都共用一个属性 2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用. 3.类变量随着类的加载而加载的.而且独一份 4.静态的变量可以直接通过 “类.类变量” 的形式来调用 5. 类变量的加载要早于对象,所以当有对象以后, 可以 "对象.类变量"  的使用,但是 &

基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式

一.static关键字 1.1.static关键字 静态:static用法:是一个修饰符,用于修饰成员(成员变量,成员函数)static 修饰的内容,所有对象共享当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以被类名.静态成员 package com.day06; /** * 人类 * @author Administrator *静态:static *用法:是一个修饰符,用于修饰成员(成员变量,成员函数) *static 修饰的内容,所有对象共享 *当成员被静态修饰后,就多

阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_13_静态static关键字修饰成员方法

static关键字 用来修饰方法的情况 任何使用这个静态方法呢? 可以直接通过对象名称的方式进行调用. 更好的写法是通过类名称进行调用. 分别定义成员变量和静态变量 静态方法里面不能用this 原文地址:https://www.cnblogs.com/wangjunwei/p/11206517.html

关于static关键字的思考

静态方法是否能调用非静态成员变量?    static关键字具有如下特点:        一.static关键字修饰的属性/方法可以通过类名直接调用,而不必先new一个对象.        二.static关键字修饰的属性只在内存中有一份拷贝,无论创建多少个对象,该类的static属性在内存中只有一份,被所有对象公用.        也就是说,当声明一个事物是static的时候,就意味着这个域或这个方法不会与包含它的那个类的任何对象实例关联在一起. 用代码进行测试:Class MyStatic{

方法的定义与调用以及static关键字的用法

一.方法的定义与使用(形参只有值传递)以下所有方法在主类中定义,并且在主方法中直接调用. 1.方法声明: 语法: [访问修饰符]  [static] 返回值类型  方法名(参数列表){ 要执行的代码 } //自定义方法 public static void print(){ System.out.println("hello"); } 当方法以void声明时,表示此方法无返回值.但是void方法仍然可以与return返回值配合使用;表示结束方法调用.java方法只有值传递 packag

static关键字与方法区和类加载

1.static的作用 答:将成员变量或方法存储进方法区.因为方法区能保证数据只存在一份,只会加载一次(类加载器加载类的时候才加载一次) 注:static Object obj = new Object();方法区存储的是obj这个引用变量,而不是Obejct这个被创建的对象,对象依旧存储在堆中.只不过由于statcic 引用变量一直存在,导致堆中这个对象一直没法被回收. 注:一定要区分什么叫变量!什么叫对象!方法区明文说的是:存储静态变量和静态方法.是变量,即引用变量,不是对象. java中对

[java基础]java中static关键字

1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在. 这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用sta

我们眼中的static关键字

就在刚才我在看线程方面的东西时候,看见一段这样的代码 <span style="font-size:14px;">package book.thread; public class Priority { static class MyThread extends Thread{ private int ID = 0; public MyThread(int id){ this.ID = id; } public void run(){ System.out.println(

由static关键字谈java基础

最近在想,自己算是中级程序员还是高级程序员,已经工作四年了,还没有对自己有一个明确的定位.毕竟程序员 的级别也不能单纯以工作时间作为唯一衡量标准. 在一个公司待一段时间,不管你的技术好与坏,总可以去适应公司的业务,框架,工作氛围.所有很多程序员,包 括我自己.能按时交付自己的工作成果,就觉得自己很了不起,飘飘然.IT技术更新很快,只有不断学习,才能进步. 而且,我发现自己工作四年,工作还算得心应手,但是偶尔碰到一些基础知识,还是束手无策.这让我反思,在追求新 技术,新思想的同时,是不是偶尔停下脚