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

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()方法。

该方法总是返回该对象实现类的“类名[email protected]+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来修饰的自由块只在类加载的时候执行一次,通常用于初始化静态变量。

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

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

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

时间: 2024-08-29 13:15:27

【Java基础06】包装类、toString、equals、final、import、static的相关文章

Java基础06 组合(转载)

在一个新类的定义中使用其他对象.这就是组合(composition).组合是在Java中实现程序复用(reusibility)的基本手段之一. 组合与"has-a" 一个对象是另一个对象的数据成员.比如我们看之前提到的充电电筒的例子: 一个充电电筒中的电池.LED灯.按钮…… 都可以是一个对象.我们可以定义一个Battery类来定义和产生电池对象.而在充电电筒的类定义中,可以用一个电池对象作为其数据成员,来代表电池部分的状态. 我们下面定义一个Battery类,并用power来表示其电

java基础解析系列(十一)---equals、==和hashcode方法

java基础解析系列(十一)---equals.==和hashcode方法 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer缓存及装箱拆箱 java基础解析系列(三)---HashMap原理 java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 j

JAVA基础之包装类,static,final,abstract ,接口 和 内部类

包装类: 自jdk5之后,java就提供了自动装箱与自动拆箱功能,大大简化了基本类型与其包装类对象之间的转换过程,当然装换过程中要注意类型的匹配. public class IntAndInteger { public static void main(String[] args) { //自动装箱 Integer intObj = 5; Integer intObjj = 5; //自动拆箱 int a = intObj; //包装类实现基本变量与字符串的转换 String str = "12

java基础类型包装类与自动打包解包

一基础类型包装类 基础数据类型存放在内存的栈区域,可以通过包装类将基础数据类型转换为引用数据类型,即存储在堆与栈中. 基础数据类型一共有8种,相对应的包装类也有8种.分别是Byte,Short,Integer,Long,Float,Double,Character,Boolean.类 包装类位于java.Lang包中. 1 public class Test1 { 2 3 public static void main(String[] args) { 4 // TODO Auto-genera

Java基础之包装类的自动装箱和拆箱详解

定义 在java中,数据类型可以分为两大类,即基本数据类型和引用数据类型,基本数据类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提供了相对应的包装类.(关于包装类的详细介绍请参看博客Java基础之常用类详解) 本篇博客主要讲述包装类的自动装箱和拆行机制. 所谓装箱,就是把基本数据类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int类型包装成Integer类型的对象,或者把double包装秤Double,等等. 所谓拆箱,就是和装箱的方向相反,将I

【转载】Java基础之String中equals,声明方式,等大总结

转载请注明出处:http://blog.csdn.net/dmk877/article/details/49420141 无论你是一个编程新手还是老手,提到String你肯定感觉特别熟悉,因为String类我们在学习java基础的时候就已经学过,但是String类型有我们想象的那么简单吗?其实不然,String类型的知识点还是比较多的.今天就和大家来一起讨论一下,关于String的一些容易让人疑惑的地方,废话不多说进入正题...如有谬误请批评指正,如果有疑问请留言.我会在第一时间修改或回答 通过

[转] Java中public,private,final,static等概念的解读

作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 public和private是访问权限修饰符,用于控制外界对类内部成员的访问.public:表明对象成员是完全共有的,外界可以随意访问.private:表明对象成员是完全私有的,不容许外界的任何访问. 具体关于public,private的内容请移步:Java对象成员的封装, 进一步有关protecte

Java 基础数据类型包装类的高频区间的数据缓存

一.Java的基础数据类型的包装类:Integer,Long,Double,Float,Boolean,Byte,Short,Character. 二.高频缓存区 其中Double和Float没有缓存,其他类型都有高频缓存区间.其高频缓存区间的缓存范围是:Boolean:使用静态final,就会返回静态值Byte:-128~127Short:-128~127Character:0~127Long:-128~127Integer:-128~127 如果所使用的包装类的值在这个缓存区间内,就会直接复

Java基础:hashCode与equals个人学习记录

摘要: 本文主要记录本人对hashCode和对equals两个知识点的学习过程. 从学生时期初学java,就知道hashCode和equals这两个方法,工作中equals方法使用也是特别频繁,要说equals方法,那么必须少不了hashCode这个方法.下面就整理一下本人目前对这俩方法的理解,文中如有错误,请指正,多谢. hash code(散列码,也可以叫哈希码值)是对象产生的一个整型值.其生成没有规律的.二者散列码可以获取对象中的信息,转成那个对象的"相对唯一"的整型值.所有对象