Java 面向对象
对象与引用
Java语言中除基本基本类型外的变量类型都称之为引用类型
Java的对象时通过引用对之进行操作的
例:
public class Practice {
String name;
String adderse;
}
Practice zs=new Practice();//创建对象
/*new Practice() 是一以pratice为模板 调用Practice类的构造方法
在堆空间里面创建了Practice的对象
Practice zs 创建了一个Practice的引用变量
*/
/*
可拆为两部分
Practice zs;
zs=new Practice();
*/
基本类型与引用类型的区别
基本类型 byte,short,int,long,float,double,char,boolean
它的值就是一个数字,一个字符或一个布尔值.
引用数据类型 类,接口,数组
它的值是对象在内存空间中的地址,具体的对象存在堆中.
值传递与引用传递
Java中进行方法调用传递参数时,参数传递分两种:
值传递(形参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递(形参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象,这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
基本类型传递的是该数据值本身。引用类型传递的是对对象的引用,而不是对象本身,而是地址
static关键字
static 静态的 用来修饰类的属性 方法 代码块 内部类
在内存中只有一份 跟随类加载 先于对象加载
static方法可以对象调用,也可以直接类名调用建议直接用类名调用
static方法内部只能访问类的static属性 不能访问类的非static属性
public class SaleTicket {
static int ticket=12;
/*静态方法只能调用静态变量
* 静态方法 调用 类名.方法名();
*
* */
public static void saleit(){
ticket=ticket-1;
System.out.println("剩余票数"+ticket);
}
public static void main(String[] args) {
SaleTicket.saleit();
SaleTicket.saleit();
SaleTicket.saleit();
}
}
代码块
在类中声明 类似一个没有名称的方法体(代码块),代码块分实例块和静态块
实例块 每次创建对象时会自动调用
{
//java代码
}
静态块 类加载是否创建对象无关时自动调用 只有一次 与是否创建对象无关
static{
//java代码
}
public class Pratice2 {
static int a=8;
{
System.out.println("实例块");
}
static {
/*跟随类只加载一次
* 多个静态块按顺序加载
* */
System.out.println("静态块");
}
public static void main(String[] args) {
new Pratice2();
System.out.println(a);
}
}
包
包的概念 : 包就是文件夹
包的作用 : 避免类重名 按照不同功能管理类 控制访问权限
包的命名规范 : 在包名中 可以使用 **.**来区分包的级别 包名一般情况下是小写
第一级 指该项目的类型 例如 com org gov
第二级 指项目所开发或者运行的公司名称 例如 oracle,sun,huawei
第三级 指项目名称 例如 bcms,oa,erp,cms
第四级 项目模块名称 例如 bean,action,exception
若要导入外部包的类 用关键字 import
类的地址 若导入不同包的类名相同,从第二个类开始使用全类名
import java.util.Date;
访问权限修饰符
public 公共权限 可修饰类 属性 方法 可被任意类访问
public class Pratice2 {//修饰类
public String a="public";//修饰属性
public void Test(){//修饰方法
Pratice2 u1=new Pratice2();
System.out.println(u1.a);}
}
protected 受保护权限 修饰属性方法
可以被同包类访问,如果不是同包类,必须是该类的子类才可以访问。
protected String b="protected";
default 同包权限 修饰类 属性 方法 只能被同包的类访问
String c="default";//为默认
private 私有权限 修饰属性 方法 只在本类中访问
private String d="private";