zoukankan      html  css  js  c++  java
  • java 笔记 chapter4 关键字static,final,内部类,内存管理

    关键字static
    静态块 static block  
    关键字final
    内部类inner classes
    内存分配:
     
    关键字static
    1,关键字static表示静态,能够与属性,方法,内部类一起使用。
    2,static属性的内存分配:
    1),类一装载就分配了内存空间给static。static 的变量是在类装载的时候就会被初始化。也就是说,只类被装载,不管你是否使用了这个static 变量,它都会被初始化。
    2),一个类中,一个static 变量只会有一个内存空间,虽然有多个类实例,但这些类实例中的这个static 变量会共享同一个内存空间。
    3,static 的基本规则                                                      
    1),一个类的静态方法只能访问静态属性 
    public class StaticTest01{
         public static void main(String [] args) {
              A a = new A();
              A.a1();   //一个类的静态方法只能访问静态属性
         }
    }
    class A{
         public static int i = 110;
         int j = 120;
         public static void a1() {
              System.out.println("非静态变量i==" + i);
              System.out.println("非静态变量j==" + j);  //报错
         }
    }
     
    2),一个类的静态方法不能够直接调用非静态方法  
    public class StaticTest02{
         public static void main(String [] args) {
              A a = new A();
              A.a1();  //报错,a1()是非静态方法
              a.a1();
         }
    }
    class A{
         public static int i = 110;
         int j = 120;
         public void a1() {
              System.out.println("静态变量i==" + i);
         }
        
         public static void a2() {
              System.out.println("静态变量i==" + i);
         }
    }
    3),如访问控制权限允许,static 属性和方法可以使用对象名加 ‘.’方式调用;当然也可以使用实例加 ‘.’方式调用。 
    4),静态方法中不存在当前对象(因为没有new),因而不能使用 “this ”,当然也不能使用”super”;  
    5),静态方法不能被非静态方法覆盖;  
    6),构造方法不允许声明为static 的  
     
     
     
    static块:
    静态块是一个存在于类中,方法外面的带有static修饰的块。
    静态块只在类装载的时候(第一次使用类的时候)执行一次。
    一般是用来初始化静态的类属性。
     
    关键字final
    1,final表示最终的,可以修饰类,方法和属性。
    2,final 的规则:
    final 标记的类不能被继承。 
    final 标记的方法不能被子类重写。 
    final 标记的变量 (成员变量或局部变量)即成为常量,只能赋值一次。  static不能修饰局部变量
    final 标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。 
    final 标记的局部变量可以只声明不赋值,然后再进行一次性的赋值。 
    final 一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以避免被误用,
     
    static和final的联系:
    同一个方法或者属性,可以同时使用static和final修饰,一般static写前面,final写后面
    public static final String NAME = "java开发";  (比较常用)
    public final static String NAME = "java开发";
     
     
    内部类:
    允许在一 个类(或方法、语句块)的内部定义另一个类,后者称为内部类
    分类:
    类级
    对象级
    匿名内部类
     
     
     
    内存分配:
    Java 程序运行时的内存结构分成:方法区、栈内存、堆内存、本地方法栈几种。
    方法区:每个类装载进来后,分成3部分,定义部分,常量池和静态变量
     
    栈内存:存放变量名,基本数据,少量的字符串,
                  栈的特点:栈是等长的,栈里面的值是不可以改变的,
    堆内存:存放由new 创建的对象和数组
    本地方法栈:Java 通过Java 本地接口JNI (Java Native Interface)来调用其它语言编写的程序,
  • 相关阅读:
    字符匹配算法之KMP
    rabbitmq_hearbeat
    rabbitmq_config
    postgres SQL编译过程
    postgres启动过程分析
    postgres源码目录结构
    Js两种post方式(转)
    PHP-MySQL,PHP-MySQLi,PDO的差异
    CSS属性中Display与Visibility的不同
    PHP中include路径修改
  • 原文地址:https://www.cnblogs.com/wxc-xiaohuang/p/3479402.html
Copyright © 2011-2022 走看看