码迷,mamicode.com
首页 > 编程语言 > 详细

【Java基础06】包装类、toString、equals、final、import、static

时间:2020-02-05 10:21:24      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:生效   文件   比较   名称   命名   命名空间   启动   lan   角度   

1 包装类

 1.1 包装类(Java8) Wrapper Class

Java为8个基本类型提供了对应的包装类,通过这些包装类可以把8个基本类型的值包装成对象来使用。JDK1.5提供了自动装箱和自动拆箱功能,允许把基本类型值直接赋给对应的包装类引用变量,也允许把包装类对象直接赋给对应的基本类型变量。

技术图片

 

 1.2 自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)

1.自动装箱:可以把一个基本类型变量直接赋给对应的包装类变量,或赋给Object变量;(低->高)

2.自动拆箱:可以把包装类对象直接赋给一个对应的基本类型变量。(高->低)

技术图片

 

 1.3 基本类型变量和字符串之间的转换

1.利用包装类提供的PraseXxx(String s)静态方法。

2.利用包装类提供的Xxx(String s)构造器。

String类还提供了多个重载valueOf方法,用于将基本类型变量转换成字符串。如下图。

技术图片

 

 其实也可以采用一种更简单的方法将基本类型变量转换为字符串,和空串“”连接即可。

 

 2 toString方法

作用:描述自己

toString()方法是Object类里的一个实例方法,所有的Java类都是Object类的子类,因此所有的Java对象都具有toString()方法。

该方法总是返回该对象实现类的“类名+@+hashCode”值。这个方法可以重写,实现更多功能,更好的描述“自己”。

 技术图片

 3 equals方法

 3.1 ==和equals

Java程序中测试两个变量是否相等有两种方式,一个是利用==运算符,一个是利用equals()方法,==判断的是两个基本类型变量的值(或两个引用类型变量的引用对象)相等(相同),不能用于比较类型上没有父子关系的两个对象。

很多时候程序判断两个引用变量是否相等时,也希望有一种类似于“值相等”的判断规则,并不严格要求两个引用变量指向同一个对象。例如,对于两个字符串变量,可能只是要求它们引用字符串对象里包含的字符序列相同即可认为相等。此时就可以利用String对象的equals()方法来进行判断。

3.2 重写equals

equals()方法是Object类提供的一个实例方法,因此所有引用变量都可以调用该方法来判断是否与其他引用变量相等。但是它同样要求两个引用变量指向同一个对象才会返回true,因此Object提供的equals()方法没有太大意义,我们通常采用重写equals方法来自定义相等的标准。

String已经重写了Object的equals()方法,String 的equals()方法判断两个字符串相等的标准是:只要两个字符串所包含的字符序列相同,通过equals()比较将返回true,否则将返回false。

技术图片

 技术图片

技术图片

4 final修饰符

4.1 final成员变量

final修饰的成员变量必须由程序员显式地指定初始值。

final修饰的成员变量,一旦有了初始值,就不能被重新赋值。

4.2 final方法

 final修饰的方法不可被重写。

Java提供的Object类里就有一一个 final 方法: getClass(), 因为Java不希望任何类重写这个方法,所以使用final把这个方法密封起来。但对于该类提供的toString0和equalsQ方法,都允许子类重写,因此没有使用final 修饰它们。

4.3 final类

final修饰的类不可以有子类。为了保证某个类不可以被继承,可以使用final修饰这个类。

例如,java.lang.Math类就是一个final类,不可以有子类。

5 import语句

5.1 包(package)

Java通过引用包机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

Java允许将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,应该在Java源程序的第一个非注释行放置如下格式的代码:

 package packageName;

一旦在Java源文件中使用了这个package语句,就意味着该源文件里定义的所有类都属于这个包。位于包中的每个类的完整类名都应该是包名和类名的组合,如果其他人需要使用该包下的类,也应该使用包名加类名的组合。 

Java语法只要求包名是有效的标识符即可,但从可读性规范角度来看,包名应该全部是小写字母,而且应该由一个或多个有意义的单词连缀而成。

Java常用包:

技术图片

5.2 import

为了简化编程,Java引入了import关键字,import可以向某个Java文件中导入指定包层次下某个类或全部类,import语句应出现在package语句之后、类定义之前。

一个Java源文件只能包含一个package语句,但是可以包含多个import语句,多个import语句用于导入多个包层次下的类。

import语句中的星号*只能代表类,不能代表包。

Java默认为所有源文件导入java.lang 包下的所有类,因此前面在Java 程序中使用String、System 类时都无须使用import 语句来导入这些类。但对于前面介绍数组时提到的Arrays类,其位于java.util 包下,则必须使用import 语句来导入该类。

6 static关键字

6.1  作用

static关键字用来修饰变量、方法和内部类,称这些变量、方法和内部类为静态变量、静态方法和静态内部类。其存储在静态内存区。

static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。

 static不能用于修饰构造器。

6.2  静态成员变量

当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。有时候希望无论是否产生了对象,或无论产生了多少个对象,某些特定的数据在内存空间都有且仅有一份,例如:所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一一个用于代表国家名称的变量。

 

技术图片

 

 

 

以static修饰的成员就是类成员,类成员属于整个类,而不属于单个对象。当系统第一次准备使用该类时,系统会为该类属性分配到静态内存空间,类属性开始生效,直到该类被卸载。

类属性或类方法(static修饰的成员)即可以通过该类来访问,也可以通过类的对象来访问,但是使用类的对象访问和直接使用该类访问并没有区别,系统会在底层把其转化为通过static访问。

6.3 静态成员方法

不必创建对象就可以调用某个方法,这个方法和对象不是绑定关系。

6.4 静态初始化块

除了用于修饰变量和方法外,还可以用于修饰类中的自由块所谓类的“自由块”。
就是在类中用“{}”包含起来的不属于任何方法或构造器的代码段。

使用static来修饰的自由块只在类加载的时候执行一次,通常用于初始化静态变量。

类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。

当一个程序中用到其它类,类是在第一次被使用的时候才被装载,而不是程序启动时所有可能用到的类都被装载。

 

【Java基础06】包装类、toString、equals、final、import、static

标签:生效   文件   比较   名称   命名   命名空间   启动   lan   角度   

原文地址:https://www.cnblogs.com/discoverspace/p/12258204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!