一:代码块
普通代码块:方法里的{}
构造代码块:类里的{}——————————————每次运行构造代码块会将其加入构造方法的代码块前。
静态代码块:使用static{}里的代码块,程序载入优先执行———对类进行某些初始化操作,在类的初始化执行,于创建方法前。
(数据库连接等其他需要准备好的代码块放入static块中)
同步代码块: 在多线程会使用,用来共享空间加锁操作。
执行顺序:静态代码块——构造代码块(创建对象的时候才会用到)——普通代码块
PS:this调用方法的时候,构造代码块加入到被调用的构造方法里。
二:package:
作用:解决类的重名问题;方便管理类。
使用:类的第一条非注释性语句。
域名倒着写:package com.maoshibing
完全限定名:包名+类名
JDK中常见的包:
java.lang:不需要手动,自动加载(包含java语言的核心)
java.util:工具包 (使用日期等相关函数的工具)
java.net:网络包 (执行与网络相关操作的)
java.io:输入输出流包 (包含各种输入输出的)
三:import(引用非lang包的其java类的时候,如果不使用import,每次使用必须要将类的完全加上才可以使用,繁琐)
作用:通过import可以导入其他包下面的类从而可以在本类中通过类名调用
使用:
import 包名.类名
import java.util.Date;
import java.util.*; ---------------导入包下所有类,会降低编译和运行速度
PS:如果导入两个同名的类,只能用包名加类名显示调用相关类
java.util.Date date=new java.util Date() 即创建一个对象使用
静态导包:(导入类的静态属性,jdk5后的)
需要某个类多次使用,又不想写他的包名
System.out.println(Math.sqrt(2));
System.out.println(sqrt(2));
使用:import static java.util.Date;
四:封装(解决属性随意访问,不合理赋值)
高聚合:类的内部数据操作细节自己完成,不允许外部干扰
低耦合:暴露少量的方法供外部使用
理解:两个类中,一个对象原型,一个main方法,main中调用属性方法随意化
概念:将类的某些隐藏信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类的方法来实现对隐藏信息的操作
set/get
好处: (提高安全性,扩展性,维护性)
隐藏类的内部细节
只能通过提供方法访问,其他方法不可以访问
可以在提供方法中添加复杂的逻辑判断语句
方便修改实现(修改提供方法即可)
总而言之,将类的属性设置为私有属性,提供公共的外部方法进行调用,可以实现丰富的细节操作
广义封装:可以将特定的功能代码块封装成一个方法,供不同程序调用
步骤:修改属性可见性:——————设置为private
创建公共的setter/getter方法——用于属性读写
在公共方法添加属性控制语句——对属性的合法性判断
五:访问控制符,实现封装
成员变量成员方法访问
public 项目所有类访问(项目可见性)
protected被类,被包,被子类访问(同一个或者不同包的子类都可以)
default 被类,被包
private 本类(私有权限)
类的访问
只有public,default