java学习笔记(六)关键字static的使用

static可以用来修饰代码块、成员变量、方法。把 static修饰的属性和方法称之为类属性、类方法;不用 static修饰属性、方法则属于该类的单个实例。

1static 修饰的代码块在类一开始加载时就执行,不需要创建一个实例;

2static 修饰的方法和属性,既可以通过类来调用,也可以通过实例来调用;没有用 static修饰的普通方法和属性只能通过实例来调用。

3、不能从static方法发出对非 static方法的调用。

package cn.com.postel.wbb.javaextends;

public class TestStatic {
    public static void main(String[] args) {
       Person p = new Person();
        // 只要类一加载就开始执行静态代码块
       System. out.println("name=" + Person.name);
        // 静态属性和静态方法直接可以用过类名 .的方式调用
       System. out.println("name is :" + Person.name + ","
              + Person. staticMethod());
        // 非静态属性和非静态方法必须先创建一个实例才可以发出对其调用
       System. out.println("age is :" + p.getAge() + "," + p.instaticMethod());
        /*
        * 静态方法不能发出对非静态方法的调用 ,因为调用非静态方法必须先创建实例,
        * 而静态方法执行的时候可能这个实例还没有创建,所以不能从静态方法发出对非静态方法的调用;
        * 但是非静态方法可以发出对静态方法的调用。
        *
        *System.out.println(staticCallInstaticMethod());
        */
    }

    public String staticCallInstaticMethod() {
        return " 静态方法调用非静态方法 ";
    }
}

class Person {
    // 静态代码块
    static {
       System. out.println(" 静态代码块 ");
    }

    // 静态属性
    static String name = "wbb" ;

    // 非静态属性
    private int age = 25;

    // 静态方法
    public static String staticMethod() {
        return " 静态方法 ";
    }

    // 非静态方法
    public String instaticMethod() {
        return " 非静态方法 ";
    }

    public int getAge() {
        return age ;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
时间: 2024-08-07 03:11:24

java学习笔记(六)关键字static的使用的相关文章

java学习笔记之面向对象static,final关键字

java学习笔记之面向对象static,final关键字 一.static关键字 1.概述: static静态的,被static修饰的成员属于类,不属于单个对象,被所有对象所共享,存在静态区中,静态的成员优先于对象加载到内存中. 2.statc修饰成员的使用方式:(被static修饰的成员变量有默认值) /* 1.可以通过对象直接使用,不推荐使用 2.通过类名调用静态成员 类名.静态成员变量 类名.静态成员方法 */ 3.static的特点 /* 1.在同一个类中,静态成员只能访问静态成员,非静

Java学习笔记六(I/O流)

1.介绍 在实际开发过程中经常会用到数据的输入/输出操作,本篇博客着重分析一下,java中经常用到的有关IO操作的类.而在java中可以将常用的流分为两个部分:字节流和字符流. 1.流的抽象基类 字节流 字符流 输入流 InputStream Reader 输出流 OutPutStream Writer 正如上图表格所示,字符和字节流都有自己的基类,其余的都是继承基类的扩展流的操作.下面会着重的讲解一下.(只要会了字符流,字节流与其操作一样,只不过操作的文件类型不一致而已) 2.字符流 专门用于

黑马程序员——JAVA学习笔记六(多线程)

1,    什么是多线程?一个程序可以执行多个任务,每一个任务称为一个线程,运行多个线程的程序称为多线程程序. 进程:正在进行中的程序(直译). 线程:进程中一个负责程序执行的控制单元(执行路径).   多线程的好处:解决了多部分代码同时运行的问题.多线程的弊端:线程太多,会导致效率的降低. 其实,多个应用程序同时执行都是CPU在做着快速的切换完成的.这个切换是随机的.CPU的切换是需要花费时间的,从而导致了效率的降低 2 ,    创建线程方式:  创建线程方式一:继承Thread类 1.定义

Java学习笔记四:static关键字

1.static表示什么? static表示"全局"或者"静态"的意思.在Java中没有全局变量的概念,static 可以简单的理解为全局的,独立的一个功能. (1)当我们在使用 static 修饰成员变量或者成员方法的时候,通常会在Java内存中为这些变量或者方法指定了一块独立的区域(这块区域可能在栈中,也有可能在堆中). (2)如果静态的变量或方法在不出其作用域的情况下,其 引用句柄是不会发生改变的. (3)这块区域是内存共享的,它的引用都指向同一个位置,就是说

java学习笔记四:static的几个角落及小谈多态

最近有点事情,没有及时更新笔记,学习不可弃,总结一下最近的学习,其中重点是static的一些应用,多态是一种设计理念,了解较容易,想如火纯清的确不是一件容易的事情. 对于static,主要有两点是我所学习的. 1.首先简单的介绍一下static的定义.static是静态的意思,就是说这个类变量或者类方法不需要实例化就可以使用.使用static的变量是类变量,也成为静态域(static field).这些是static的基本语义,了解了这些,继续向下看. java核心技术(卷一)对于静态有这样一段

Java学习笔记---一些关键字的使用

一.instanceof 作用:判断一个引用类型的变量所指向的对象是否是一个(或接口.抽象类.父类)的实例. 用法:boolean result= object instanceof class. 二.strictfp 作用:用来确保浮点数运算的准确性.如果没有指定strictfp关键字,此时计算结果可能会是不精确.此关键字可以保证Java编译器以及运行环境完全依照IEEE二进制浮点数算术标准来执行. 用法: public strictfp class Test{ public static v

JAVA学习笔记(六十一)- 反射Reflection

反射Reflection import java.lang.reflect.Modifier; /* * 反射Reflection * java.lang.Class类 */ public class Test01 { public static void main(String[] args) { String name = "tom"; // 方式一:通过对象getClass()方法 // 任意一个类的对象,都有一个getClass()方法 // 可以通过此获取获取当前对象的类型所

java学习笔记(六)继承

继承是面向对象编程中最重要的特征之一,它允许通过继承一个已经存在的类,来编写一个新类.已有的类称为父类,也可以称为基类,超类,新类称为子类也称为派生类. 继承使用关键字extends,用在类名之后,例:public void class salary extends Employee(){ } 子类salary 继承父类Employee java中的类只能继承一个类. 子类能继承父类中用public protected 修饰的成员. 继承的单根性(单继承):一个java类只能有一个父类. 继承的

Java学习笔记六:多态

多态通过分离“做什么”和“怎么做”,从另一个角度讲接口和实现分离开来.多态的作用是消除类型之间的耦合关系,多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要他们都是从同一个基类导出而来的. 1.方法参数中传入基类,可以使子类方便调用 class Instrument { public void play(Note n) { System.out.println("Instrument.play()"); } } class Wind extends Instrument {

JAVA学习笔记(六十)- 网络编程登录实例

客户端 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import ja