这篇文章是自己PPT上面的东西,可能截图比较多,见谅,另外我会上传这份PPT想下载的可以下载
类和对象
类的特点
类是抽象的,是没有具体实例的,只是一种对象的模板。
类的结构:
权限修饰符 class 类名{}
属性(成员变量)的结构:
权限修饰符 类型 属性名 【赋值】
成员方法:
权限修饰符 返回值类型 方法名(参数类型 参数名){
….//方法体
return 返回值;
}
局部变量:
在方法体内部定义的变量,或者在方法中的形参,称为局部变量,
局部变量的范围:
局部变量是在方法被执行的时候被创建,在方法结束的时候被销毁,利用这个特点,可以有效的避免线程安全问题。局部变量在使用的时候必须进行赋值操作或者被初始化,否则将会出现比编译错误。还有,在分支语句或者循环语句以及try-catch-finally中定义的变量,也不可以在本结构体之外的地方进行使用。
This关键字:
this关键字在方法定义期间内是没有意义的,规定模板,确定逻辑结构。当程序运行起来之后,this关键字指向当前对象。
This关键字的应用
(1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。
类的构造方法
1.构造方法没有返回值
2.构造方法的名称要与本类的名称相同
构造方法的结构
权限修饰符 类名 (){ //*****构造方法体}
当一个类进行实例化的时候也就是创建对象的时候会用new关键字调用构造方法来进行实例化对象。
当对构造方法进行私有化的时候,就不能用构造方法来进行创建对象,利用这个特点,我们可以利用单例模式来创建出唯一的对象,降低了内存的开销,但是注意会有线程安全问题,同时还可以利用这种方法来创建只能在一定范围内选择的变量,例如枚举就是利用这种方法
Static
有时候,我们在处理问题的时候会需要连各类在同一个内存区域共享一个数据,这时候就可以用static来修饰变量,常量,或者方法,来达到这样的目的
被声明为static的变量、常量和方法被称为静态成员,静态成员归类所有,与别与个别对象,也就是实例化的对象,它们可以在本类或者其他类使用类名和“.”运算符来调用静态成员
值得注意的是:虽然静态成员也可以使用“对象.静态成员”的形式进行调用,但是通常不这样做,因为这样会混淆静态成员和非静态成员。
还有:
1.在静态方法中不可以使用this关键字,因为static是类共有的,而不是某个实例拥有的
2.在静态方法中不可以直接调用非静态方法。
3.静态块和静态方法中不可以直接使用非静态的成员变量
对象
什么是对象:对象就是一个类的实例,比如一个大雁的整体就是一个类型,但是如果要指定其中一个叫做白天鹅的大雁,那么这个叫做白天鹅的就是一个对象。
对象的创建:
一般的创建方法就是通过new关键字调用构造方法来实现:比如:WildGoose xiaobai = new WildGoose(); WildGoose xiaobai = new WildGoose(“小白”); 当然还有其他特殊方式创建对象,这里就不在深入说明了
访问对象的属性和方法:
xiaobai.fly(); xiaobai.wings=“一双翅膀”;
对象的引用: 类名 对象引用名称 = 对象的实例
比如上面的 xiaobai就是对象的引用,它只是一个引用的作用,不起任何效果,
new WildGoose();这个是对象的实例化,真正做事的是他,它才会在内存分配,方法和变量生效
对象的比较:
因为除了八大基本数据类型是字面量之外其他自定义都是继承的Object,是一种引用类型,所有对象的比较的时候,==是比较的是地址,如果是两个new出来的对象比较,那么一定是不同的返回结果是false(除了常量池的以外),有时候我们并不希望这样的,所有重写equals方法,equals方法在这里略
对象的销毁:
每个对象都有自己的声明周期,当对象的生命周期结束的时候,分配给该对象的地址空间就会被收回,在java的垃圾回收机制中,会自动帮助我们回收无用的但是占用内存的资源,
那么jvm会将什么资源视为垃圾呢?
1. 对象引用的作用范围超过其作用范围,这个对象将被视为垃圾
{
Exameple e = new Example();
}
2.将对象赋值null
{
Exameple e = new Example();
e=null;
}
指的一提的是:
我们常用的数据中close方法吧,或者关闭什么连接,都是把对象赋值为null,让jvm将其视为垃圾,就会将这个对象的实例所分配的内存空间收回,实际上并不是我们关闭的,而是jvm的垃圾回收机制帮助我们做的,注意!!!!并不是所有的语言都有这个垃圾回收机制,这个是java独有的,不要应用到其他语言上面,比如c++会让我们手动调用 delete 指针,释放,这样做会很烦,需要非常细心,所以java这个垃圾回收机制时不错的
包装类
Java的八大基本数据类型都有一个自己的包装类,其中int类型的包装类的类名为Integer,char类型的包装类为Character,,其他的包装类的名称都是首字母大写就ok,为什么使用包装类
java中的类把方法和数据连接在一起,构成了自包含式的处理单元,但在java中不能定义基本数据类型的对象,为了能将基本数据类型视为对象进行处理,并能连接相关的方法,java为每个基本数据类型,都提供了包装类,其实java本身是可以处理基本数据类型的,但是有些情况下需要将其作为对象来处理,这是就需要将其转换为包装类了。
那么问题来了,到底什么情况下使用包装类呢?
举两个例子:
1.将字符串转换为int类型,
int a = Integer.parseInt("123");
2.如果定义实体类的时候用整数来表示仓库中的零食多少,那么0不能代表仓库里面没有东西,而null却可以,所以这个时候选择包装类会更好一些
由于包装类的方法大同小异,那么将会主要讲解Integer的相关方法。其他方法需要同学们自行掌握。
java.lang包中的Integer类,Long类和Short类,都是Number类的子类,区别 就在于封装的方法不听
。而这个父类Number是一个很有用的类型,比如有一条SQL语句 select count(*) from emp 如果在java中用什么类型来收呢,有人可能会说,int,其实这不完全正确,不同的数据库使用不同的类型的,Oracle是iint Number
但是mysql中又是另一种类型,此时使用Number类型来接收,会表示所有数据库的count(*)的返回类型,此时这个代码就比不写这个类型的代码,可移植性强
下面正式介绍Integer
Integer的构造方法:
1.Integer(int number);
以一个int类型来获得Integer对象
2.Integer(String str)
以一个字符串来获取Integer,前提是这个字符串必须是数字
常用方法:
自动拆箱和自动装箱
Integer i = new Integer(123);
int b = i;
Integer c = 123;
这样做都是合法的。