zoukankan      html  css  js  c++  java
  • java第五章:面向对象(oop)之 static、package、import关键字

    java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下: 
    1、首先加载要创建对象的类及其直接与间接父类。
    2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。
    3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。
    4、最后执行构造器,构造器执行完毕,对象生成。
    上面四段话意思就是静态变量(全局变量)创建时间要早于new对象(成员变量)的时间。
    所以静态的方法,不能访问非静态的属性和方法;反之,非静态的方法可以访问静态的属性和方法;

    static 关键字:可以修饰方法(静态方法)或者成员变量(全局变量),不能用来修饰局部变量(只能用final修饰)
    全局变量和成员变量的区别:
    1.在内存中的保存位置不同:成员变量保存在堆中,全局变量保存在方法区;
    2.保存份数不同:成员变量,每new出来一份都要分配空间,保存多份;全局变量只保存一份;
    3.创建时间不同:成员变量,new的时候,才创建;全局变量,类加载时就创建;
    4.访问方式不用: 成员变量,用对象名.属性,对象名.方法名();,可以使用this关键字;
    全局变量,推荐 用类名.属性,类名.方法名();当然也可以
    用对象名.属性,对象名.方法名(),可以使用this关键字;

    (普通)代码块:单独在{}中写的代码;new的时候,才会被执行,不new不执行,new几次执行几次;
    执行顺序在构造器之前

    (static)代码块:static{} 类加载的时候就会被执行,不new也执行。只会执行1次。
     执行顺序:静态代码块>普通代码块>构造器>普通方法或静态方法;
    静态的方法或者代码块,只能访问静态的成员变量,不能访问非静态的属性和方法;
    反之,非静态的方法或者代码块可以访问的静态或非静态属性和方法;
    package关键字:包是对存放的数据分门别类,避免同级目录的命名冲突
    声明包,语法:package 包名,eg:package cn.zzsxt.demo;必须放在类的第一行

    常用的包:
    java.lang包:java的核心类库(String , System,Math....);
    java.util包:java工具类(Scanner,Arrays)
    java.io包:i(input)/o(output)java中流的输入和输出相关类库;
    java.sql包:提供操作数据库的相关类库
    java.net包:网络编程相关类库
    java.text包:国际化或格式化输出相关类库

    import关键字:需要访问不同包下的其他包中的类时,需要导包;
    方式1:import 包名.*---导入该包下的所有类;
    方式2:import 包名.类名---导入该包下的具体类(推荐使用)
    方式3:不使用import关键字,使用全类名书写代码,eg: java.util.Scanner input = new java.util.Scanner(System.in);

    静态导入:JDK 1.5之后的新特性,在导入某包下的静态属性或者方法时,可以是用静态导入;
    语法:import static 包名.类名.*或者import static 包名.类名.属性名/方法名;然后代码书写的时候就可以省略类名;


  • 相关阅读:
    【C#进阶系列】06 类型和成员基础
    纪中5日T1 1564. 旅游
    纪中17日T1 2321. 方程
    纪中17日T2 2322. capacitor
    纪中10日T1 2313. 动态仙人掌
    纪中14日听课小结 图论 最短路 二分图 差分约束
    一个抓猫的游戏 消遣GAME 持续更新中!
    洛谷P1464 Function  HDU P1579 Function Run Fun
    洛谷P1976 鸡蛋饼
    纪中12日T1 2307. 选择
  • 原文地址:https://www.cnblogs.com/SXTzhaopengda/p/6944021.html
Copyright © 2011-2022 走看看