[JAVA][从0开始的JAVA随笔]静态(static)属性的使用方法及注意事项

除了内部类之外,类一般不能具有静态属性。

如下定义了一个外部类Static_test和一个内部静态类Static_class:

class Static_test{

    Static_test(){
        s_int = 1;
    }

    public static int s_int;

    public static void s_func(){
        System.out.println("s_int = "+s_int);
    }
}
public class Hello{

    Hello(){

    }

    public void seta(int num){
        a = num;
    }

    public void setb(int num){
        b = num;
    }
    public void showa(){
        System.out.println("a = "+a);
    }
    public void showb(){
        System.out.println("b = "+b);
    }

    public static int a;
    public int b;

    static class Static_class{

        Static_class(){
            s_int = 2;
        }

        public static int s_int;

        public static void s_func(){
            System.out.println("s_int = "+s_int);
        }
    }

    public static void main(String[] args){
        Hello h1 = new Hello();
        Hello h2 = new Hello();
        System.out.println("h1:");
        h1.showa();
        h1.seta(4);
        h1.setb(2);
        h1.showb();
        System.out.println("h2:");
        h2.showa();
        h2.setb(3);
        h2.showb();
        System.out.println("h:");
        System.out.println("a = "+Hello.a);

        Static_test st = new Static_test();

        Static_class sc = new Static_class();

        Static_test.s_func();

        Static_class.s_func();
    }
}

输出:

调用外部类及内部类的静态成员时,只能使用 [类名.成员名] 或 [成员名] 的方式调用,无法使用对象来调用静态成员。

静态成员归类所有,所有实例对象调用的静态成员都指向类本身的静态成员,若静态成员被修改,则所有对象调用时得到的都是修改之后的静态成员。

原文地址:https://www.cnblogs.com/kang-l/p/8401527.html

时间: 2024-10-10 08:48:17

[JAVA][从0开始的JAVA随笔]静态(static)属性的使用方法及注意事项的相关文章

Java中的null对象也可以访问static成员变量和方法

声明:本博客为原创博客,未经允许,不得转载!小伙伴们如果是在别的地方看到的话,建议还是来csdn上看吧(链接为 http://blog.csdn.net/bettarwang/article/details/26515271),看代码和提问.讨论都更方便. 一般来说,一个类的对象要在实例化之后才可以访问类中的成员变量和方法.如果它还是null,通常意义上我们就认为它不能访问类中的成员.实际上确实不提倡这样,而且null对象确实不能访问实例成员(变量和方法),否则会引发NULLPointerExc

2019-05-15 Java学习日记之面向对象_构造方法&静态static

构造方法 构造方法constructor概述和格式: A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法的格式特点 a:方法名与类名相同(大小也要与类名一致) b:没有返回值类型,连void都没有 c:没有具体的返回值return 注意事项: 1.构造方法不能用对象调用 2.构造方法也是有return语句的,格式是return 构造方法的重载和注意事项: 注意事项: a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法 b:如果我们给出了构造方法,系统将不再提供默认的无

Java基础——成员变量、局部变量和静态变量的区别

之前在刚开始学习Java的时候,就谈了谈Java基础中的变量,虽然知道这货以后会经常用到,但没想到了基本语法这里,竟然有冒出来了成员变量.局部变量和静态变量.变来变去太容易让人搞晕了,挑拣出来梳理一下喽! 要想区分这哥仨,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中,最基本的单位是类,类就是用来体现事物的. 用类class来描述事物也是如此: 属性:对应类中

【Java】代处理?代理模式 - 静态代理,动态代理

>不用代理 有时候,我希望在一些方法前后都打印一些日志,于是有了如下代码. 这是一个处理float类型加法的方法,我想在调用它前打印一下参数,调用后打印下计算结果.(至于为什么不直接用+号运算,见[Java]Float计算不准确) package com.nicchagil.study.java.demo.No09代理.No01不用代理; import java.math.BigDecimal; public class FloatCalculator { public float add(fl

有关Java 5.0+ 并发包的探讨-2 section

有关Java 5.0+ 并发包的探讨-2 section 博客分类: Core Java JavathreadAccessF# 前面文章用直接使用Thread类的start方法来新启动一个线程,看起来貌似没有什么问题,问题就在于线程使用场景的需求上,如果希望每个一段时间自动运行一次这个线程,如果想使用线程池,这个Start方法就完全不够了.下面我们来看看Java并发包中的Executor接口吧 Java代码   public interface java.util.concurrent.Exec

Java 5.0 新特性

package com.fish.jdk15; import java.util.ArrayList; import java.util.Collections; /*  jdk1.5新特性之-------静态导入    静态导入的作用: 简化书写.   静态导入可以作用一个类的所有静态成员(静态方法和静态成员变量).     静态导入的格式:  import static 包名.类名.静态的成员:     静态导入要注意的事项:   1. 如果静态导入的成员与本类的成员存在同名的情况下,那么默

java之登录实例(面向对象,静态,scanner等)

分析:抽取用户类,提取出用户的属性,方法 用户类测试:判断登陆,注册等 User : 用户类    package cn.my.login; import java.util.Scanner; /** *  分析:用户的基本信息 *  用户名,密码,邮箱,电话,地址 *  登录,注册方法 * */public class User { private String username; private String password; private String email; private S

JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是class对象 我们在上节验证了同步函数的锁是this,但是对于静态同步函数,你又知道多少呢? 我们做一个这样的小实验,我们给show方法加上static关键字去修饰 private static synchronized void show() { if (tick > 0) { try { Thread

JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 this的特点 this就代表本类对象 这在我们的set方法里面是有的 public void setName(String name) { this.name = name; } this代表他所在的函数对属对象的引用 现在我们这里有这么一个需求 //公共的 类 类名 public class H