static理解

1为什么main方法是静态的

因为如果一个类定义了main()方法,这个main方法应在类的构造方法之前被调用,可是由于构造方法运行的时候尚未加载的jvm虚拟机中,所以需声明为static

2:静态方法.静态属性怎么调用

类名.静态方法

类名.静态属性

对象名.静态方法

对象名.静态属性

即:静态方法和静态属性,既可以用类名直接调用,也可以用对象调用

3 静态方法只可以被隐藏,而不可以覆盖。当t1为Person类型时,则调用Person类的静态方法,因为静态方法只属于这个类,而当t2类型为Test02时,调用子类的静态方法,当子类没有时,调用父类的方法,这就叫做继承父类的方法了。

  1. </pre></li></ol><p></p><pre name="code" class="html"> class Person {
        static String name, department;
        public  static void printValue() {
            System.out.println("name is " + name);
            System.out.println("department is " + department);
        }
    }  
    
    public class Test02 extends Person {
        static int salary;  
    
        public  static void printValue() {
            System.out.println("salary is " + salary);
        }  
    
        public static void main(String args[]) {
            Person t1 = new Test02();
            t1.printValue();
            Test02 t2 = new Test02();
            t2.printValue();
        }
    }  
    1. name is null
      department is null
      salary is 0

      static修饰属性:单例的,加载到内存中只保存一份,节省内存资源

    2. 方式一
    3. <span style="background-color: rgb(204, 102, 0);">package javaTest;
      
      public class Singleton {
      <span style="white-space:pre">	</span>private Singleton s = new Singleton();
      <span style="white-space:pre">	</span>private Singleton(){
      <span style="white-space:pre">		</span>
      <span style="white-space:pre">	</span>}
      <span style="white-space:pre">	</span>public Singleton getInstance(){
      <span style="white-space:pre">		</span>return s;
      <span style="white-space:pre">		</span>
      <span style="white-space:pre">	</span>}
      
      }</span>
      
      1. package javaTest;
        
        public class Singleton2 {
        	private Singleton2 s=null;
        	private Singleton2(){
        
        	}
           public Singleton2 getInstance(){
        	   if(s==null){
        		   s=new Singleton2();
        
        	   }
        	return s;
        	   }
           }
        
时间: 2024-07-30 03:21:49

static理解的相关文章

Java之static理解

说到关键字static,首先想到了常量,静态变量,本文我总结了下static的用法. 1.静态变量 可以被赋值,便于类访问. 2.静态方法 静态方法与静态变量都可以被private.public修饰. 当JVM加载类时,就会将类的静态方法和静态变量加载到方法区中.且只会加载一次,对所有线程共享,也就说其他线程可以更改方法区中的静态变量. static final 可以修饰变量和方法,表示常量不可被修改,修饰方法表示方法不可被覆盖,可以通过类名访问. 3.静态代码块 当JVM加载类时,静态代码块只

java基础问题巩固(1)

你对java垃圾回收了解吗?什么时候需要使用? 答: 垃圾回收器的作用是查找和回收(清理)无用的对象,从而让jvm更 有效的使用内存.但是运行因为垃圾回收本身会有开销,过于频繁的使用会导致性能下降.比如有些程序在短期内需要大量的内存,这时候有必要强制下达一条垃圾回收命令,以便于有更多可用的物理内存.垃圾回收的目的就是识别并且丢弃应用不再使用的对象来释放和重用资源. 2.static理解什么?什么时候需要使用? 答:static是修饰词,被static关键字修饰的方法/变量不需要依赖对象来进行访问

20182303 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结

目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 学习进度条 参考资料 教材学习内容总结 4.8.1迭代器和for循环 1. 迭代器 使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口Iterator接口接受(多态) 使用Iterator接口中的方法hasNext()判断还没有没有下一个元素 使用Iterator接口中的方法next()取出集合中的下一个元素 2. for循环的使用 用来遍历集

public static &lt;T extends Comparable&lt;? super T&gt;&gt; void sort (List&lt;T&gt; list)的理解

public static <T extends Comparable<? super T>> void sort (List<T> list)的理解 public static <T extends Comparable<? super T>> void sort (List<T> list) (1)首先:public static void sort(List list) (2)为了安全性加泛型:public static <

synchronized与static synchronized 的差别、synchronized在JVM底层的实现原理及Java多线程锁理解

本Blog分为例如以下部分: 第一部分:synchronized与static synchronized 的差别 第二部分:JVM底层又是怎样实现synchronized的 第三部分:Java多线程锁,源码剖析 第一部分:synchronized与static synchronized的差别 1.synchronized与static synchronized 的差别 synchronized是对类的当前实例进行加锁,防止其它线程同一时候訪问该类的该实例的全部synchronized块.注意这里

JAVA Static方法与单例模式的理解

近期用sonar測评代码质量的时候,发现一个问题,project中一些util类,曾经写的static方法都提示最好用单例的方式进行改正. 为此,我细致想了想,发现还是非常有道理的.这里谈谈我个人对static方法与单例模式的理解. 所谓单例模式,我不做过多解释,推荐java设计模式之禅这本书,好好理解一下. 这里我谈谈两种写法: 曾经一些公共的类,我不假思索,习惯依照例如以下写法去写: public class DateUtil { public final static String DAT

正确理解静态Static关键字

与其他语言不通,C#没有全局变量和全局函数的感念,C#的所有字段和方法都出现在一个类的上下文中,在C#中与全局字段或函数等价的就是静态字段或方法.“全局字段或方法”与“C#的静态字段或方法”没有功能上的差别,只是静态字段和静态方法可以加上“访问修饰符”如Private,从而可以对访问进行限制,提供更好的封装.    首先来看静态字段     直接在类名之后访问静态字段如(ClassName.StaticField)在类的所有实例中都共享静态字段的存储位置,静态字段是全局的.打个比方我们有一套5元

synchronized与static synchronized 的区别、synchronized在JVM底层的实现原理及Java多线程锁理解

本Blog分为如下部分: 第一部分:synchronized与static synchronized 的区别 第二部分:JVM底层又是如何实现synchronized的 第三部分:Java多线程锁,源代码剖析 第一部分:synchronized与static synchronized的区别 1.synchronized与static synchronized 的区别 synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是"类

理解使用static import 机制(转)

J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员.本文介绍这一机制的使用方法,以及使用过程中的注意事项. 在Java程序中,是不允许定义独立的函数和常量(当然,准确的说,只是被final修饰.只能赋值一次的变量)的.即使从它们本身的功能来看,完全不需要依附于什么东西,也要找个类或接口作为挂靠单位才行(在类里可以挂靠各种成员,而接口里则只能挂靠常量). 挂靠的方法,是把它们加上static修饰符,定义为这个类或接口的静态成员