javajavase

package

作用

  • 包帮助管理大型软件系统:将功能相近的类划分到同一个包中。比如MVC的设计模式
  • 包可以包含类和子包,划分项目层次,便于管理
  • 解决类命名冲突的问题
  • 控制访问权限

    1. package 包名;

    注意

  • 必须在源文件的第一行

  • 一个源文件只能有一句声明包的语句
  • 命名规范:域名倒置+分类的包名,全部单词都小写,每个 **.** 代表一层文件目录

import

标准格式:**import 包.类名;**
简写格式:**import 包.*;** 只能代表类,不包括子包
静态导入:`**import static 包.类.
;**`

    • 代表类中的静态成员(静态方法和静态的属性)
  • 意味着可以在本类中,直接使用被导入的静态成员,而不需要加“类名.”

注意

  • 在源文件中显式的使用import结构导入指定包下的类、接口
  • 声明在 package 和 class 之间
  • java.lang 包下定义的,省略 import 结构
  • 本包下定义的,可以省略import结构
  • 使用了不同包下的同名的类,则必须至少有一个类需要以全类名的方式显示

如果一个源文件声明了包

  • 编译的格式:**javac -d 字节码文件生成的存储目录 源文件名.java**

例如:javac -d ./ 源文件名.java
./ 表示源文件的当前目录

  • 运行的格式:**java 包.类名**

JDK中常见的包

  • java.lang 包含一些Java语言的核心类,如String、Math、Integer、System和Thread,Object,提供常用功能
  • java.net 包含执行与网络相关的操作的类 接口
  • java.io 包含能提供多种输入/输出功能的类 接口
  • java.util 包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数
  • java.text 包含了一些java格式化相关的类
  • java.sql 包含了java进行JDBC数据库编程的相关类/接口

MVC设计模式

  • MVC是常用的设计模式之一,将整个程序分为三个层次:视图模型层、控制器层、与数据模型层
  • 这种将程序输入输出、数据处理,以及数据的展示分离开来的设计模式 使程序结构变的灵活而且清晰,同时也描述了程序各个对象间的通信方式,降低了程序的耦合性
  • 模型层 model 主要处理数据
    • 数据对象封装 model.bean/domain
    • 数据库操作类 model.dao
    • 数据库 model.db
  • 控制层 controller 处理业务逻辑
    • 应用界面相关 controller.activity
    • 存放fragment controller.fragment
    • 显示列表的适配器 controller.adapter
    • 服务相关的 controller.service
    • 抽取的基类 controller.base
  • 视图层 view 显示数据
    • 相关工具类 view.utils
    • 自定义view view.ui

return

使用在方法体中

作用

  • 结束方法
  • 针对于有返回值类型的方法,使用”return 数据”方法返回所要的数据

注意:return关键字后面不可以声明执行语句


extends

表示继承
但子类不是父类的子集,而是对父类的“扩展”


this

表示当前对象或当前正在创建的对象

用法

  • this.属性——当成员变量与局部变量重名时
  • this.方法

    使用this访问属性和方法时, 如果在本类中未找到,会从父类中查找

  • this 不能用于 static 方法中

  • this() 或 this(实参列表)
    • 我们在类的构造器中,可以显式的使用**this(形参列表)**方式,调用本类中指定的其他构造器
    • 构造器中不能通过”this(形参列表)”方式调用自己
    • 如果一个类中有n个构造器,则最多有 n - 1构造器中使用了”this(形参列表)”
    • 规定”this(形参列表)”必须声明在当前构造器的首行
    • 构造器内部,最多只能声明一个”this(形参列表)”

super

表示直接父类对象的引用,代表父类的内存空间的标识
用法

  • **super.属性**访问父类中与子类重名的属性
  • **super.方法**访问父类中被子类覆盖的方法
  • **super()****super(实参列表)**
    • 子类中所有的构造器默认都会访问父类中空参数的构造器
    • 父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)指定调用本类或者父类中相应的构造器。同时只能”二选一”,且必须放在构造器的首行
    • 子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,编译出错

注意

  • 当子父类出现同名成员时,可以用 super 表明调用的是父类中的成员
  • super 的追溯不仅限于直接父类

this和super的区别
this:super.png


instanceof

表示某个对象是否是本类或本类的子类的对象

  • 例如:a instanceof Type;

返回 true 表示 a 是 Type 的对象,或子类的对象


static

表示静态的
特点

  • 随着类的加载而加载
  • 优先于对象存在
  • 修饰的成员,被所有对象所共享
  • 访问权限允许时,可不创建对象,直接被类调用
  • 关于静态属性和静态方法的使用,大家都从生命周期的角度去理解

修饰

  • 类属性
    • 该类各个对象之间共享的变量,可通过”类名.类属性”
    • 类属性存储在方法区的静态域中
    • 其中一个对象对它修改,其他的对象的该属性值也会被修改
    • 它的 get/set 也是 static 的的静态域中
    • 可以使用“显式初始化”,还可以使用“静态代码块”进行初始化
  • 类方法
    • 没有对象的实例时,可以用“类名.方法名()”的形式访问由 static 修饰的类方法
    • 在static方法内部只能访问类的 static 修饰的属性或方法,不能访问类的非static 的结构
    • 因为不需要实例就可以访问 static方法,因此 static方法内部不能有this super关键字
    • static修饰的方法不能被重写
  • 静态代码块
    • 在类加载并初始化时调用,只会执行一次,一般用于静态属性的赋值
    • 构造方法用于对象的初始化,静态初始化块用于类的初始化操作
    • 在静态初始化块中不能直接访问非static成员
    • 静态初始化块执行顺序
    • 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止
    • 构造方法执行顺序和上面顺序一样
  • 静态内部类

使用

  • 开发中,如何确定一个属性是否要声明为static的?
    • 属性是可以被多个对象所共享的,不会随着对象的不同而不同的
    • 类中的常量常常声明为static
  • 开发中,如何确定一个方法是否要声明为static的?
    • 操作静态属性的方法,通常设置为static的
    • 工具类中的方法,习惯上声明为static的。 比如:Math、Arrays、Collections

image.png


final

表示最终的
修饰

  • 类:该类不能被继承,比如:String类、System类、StringBuffer类
  • 方法:该方法不能被重写
  • 变量
    • 变量的值一旦被赋值就不能被修改,即常量
    • 属性
      • 必须手动初始化,不能默认初始化
        • 显式初始化
        • 代码块中初始化
        • 构造器中初始化
      • final static全局常量
    • 局部变量
      • 尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值

native

表示原生的、非Java语言实现的
但是使用者可以把它当做Java的方法或成员使用