java中的一些概念总结Word下载.docx
《java中的一些概念总结Word下载.docx》由会员分享,可在线阅读,更多相关《java中的一些概念总结Word下载.docx(105页珍藏版)》请在冰点文库上搜索。
![java中的一些概念总结Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/f9f97c97-cb53-4cf8-91c2-55c95f50749a/f9f97c97-cb53-4cf8-91c2-55c95f50749a1.gif)
11
12
13
14
15
16
17
18
public
class
Demo01
{
static
void
main(String[]
args)
int
x
=
30;
//基本数据类型
Integer
i
new
Integer(x);
//装箱——将基本数据类型变成包装类
temp
i.intValue();
//拆箱——将包装类变为基本数据类型
System.out.println(temp);
float
y
30.9f;
Float
f
Float(y);
tem
f.floatValue();
System.out.println(tem);
boolean
b
true;
Boolean
bb
Boolean(b);
t
bb.valueOf(b);
System.out.println(t);
}
控制台输出:
30
30.9
true
在JDK1.5之前,对于程序本身来说,包装类是不能进行“+”、“-”……运算,因为那是一个类。
但是在JDK1.5之后对程序的包装类功能进行了改变,增加了自动装箱与拆箱机制,而且也可以使用包装类进行数字运算。
例程2:
19
Demo02
ii
10;
//自动装箱为Integer
ff
3.3f;
//自动装箱为Float
boo
false;
//自动装箱为Boolean
ii++;
//直接对装箱后的类进行操作
ff--;
!
boo;
xx
ii;
//自动拆箱为int
yy
ff;
//自动拆箱为float
bool
//自动拆箱为boolean
System.out.println(xx);
System.out.println(yy);
System.out.println(bool);
2.3
在包装类中还有一个最大的特点:
就是可以将字符串变为指定的数据类型。
例程3:
Demo03
String
str1
"
99"
;
//由数字组成的字符串
str2
56.8"
str3
true"
System.out.println(Integer.parseInt(str1));
//转化为相应的类型输出
System.out.println(Float.parseFloat(str2));
System.out.println(Boolean.parseBoolean(str3));
99
56.8
方法的参数或者返回类型也可以设置成响应的包装类。
如下如所示:
2014-12-08
JAVA
1101浏览12回答
最佳回答
2015-09-09
太厉害了,第一天,第一次的心态,基本觉得以后做事的水平了
汤宗
回复
_潇潇暮雨
(提问者)
非常感谢!
#12015-09-09
回复
_潇潇暮雨
【Object类】
在java中一切类都是以继承的关系存在的。
现在假设定义了一个Person{}类,如果一个类在定义的时候如果没有默认指明它的继承关系,那么它默认继承Object类,所以Person类的实际代码是:
Person
extends
Object{
……
Object类是所有类的父类。
Object类的构造方法:
publicObject()
Object类中的3个主要方法:
publicbooleanequals(Objectobj)——对象比较
publicinthashCode()——取得hash码
publicStringtoString()——对象打印时调用
一个完整的类在定义的时候应该重写Object类中的3个主要方法。
例程一:
toString方法的使用
Demo{
//
定义Demo类,实际上就是继承了Object类
};
ObjectDemo01{
main(String
args[]){
Demo
d
Demo()
实例化Demo对象
System.out.println("
不加toString()输出:
+d)
加上toString()输出:
+d.toString())
gpf.Demo@18f1d7e
由此可见,加与不加toString的结果是一样的,也就证明了对象在打印的时候一定会调用toString()方法,是默认调用的。
那么此时就可以利用此特性完成类中信息的输出。
例程二:
重写toString方法,输出类中的信息
Person{
private
name
定义name属性
age
定义age属性
Person(String
name,int
age){
this.name
this.age
@Override
toString(){
return
姓名:
+
;
年龄:
ObjectDemo02{
per
Person("
Tom"
13)
实例化Person
对象信息:
per)
Tom;
equals()方法:
equals()方法的主要功能是进行对象的比较操作,String本身是Object类的子类,所以已经重写了该方法。
equals()方法的主要功能是完成对象的比较的。
例程三:
equals()方法比较对象。
20
21
22
23
24
25
26
27
28
29
31
32
33
34
35
36
equals(Object
obj){
if(this==obj){
地址相等
true
肯定是同一个对象
if(!
(obj
instanceof
Person)){
不是Person对象
false
(Person)
obj
向下转型
if(per.name.equals(this.name)&
&
per.age
==
this.age){
依次比较内容
}else{
ObjectDemo03{
per1
Rubby"
30)
per2
System.out.println(per1.equals(per2)?
是同一个人!
:
不是同一个人!
)
System.out.println(per1.equals("
hello"
)?
Object类是所有类的父类,则所有类的对象都可以使用Object接收,但是Object不光可以接收对象,还可以接收任意的引用数据类型。
例程四:
使用Object接收接口实例
interface
A{
getInfo();
B
implements
getInfo(){
覆写方法
Hello
World!
ObjectDemo04{
A
a
B()
向上转型,为接口实例化
Object
使用Object接收,向上转型
(A)obj
System.out.println(x.getInfo())
HelloWorld!
例程五:
使用Object接收数组
ObjectDemo05{
temp[]
{1,3,5,7,9}
定义数组
print(obj)
print(Object
o){
if(o
int[]){
判断是否是整型数组
x[]
(int[])o
for(int
i=0;
i<
x.length;
i++){
System.out.print(x[i]
\t"
13579
总结:
Object类是所有类的父类,只要是引用数据类型,都可以使用Object类进行接收
对象在进行向下转型之前,一定会发生向上转型(instanceof关键字)
2014-12-09
【static关键字】
非static关键字声明的属性和方法,每个对象都占有各自的内容。
如果现在希望一个属性和被该类的所有对象共同拥有,则可以将其声明为static类型,声明为static类型的属性或者方法之后,此属性或者方法也称为静态变量和方法,可以由类名直接调用。
使用static声明属性:
static可以声明全局属性
Person{
定义Person类
定义name属性,暂时不封装
定义age属性,暂时不封装
country
A城"
定义城市属性,有默认值
age;
info(){
得到信息
,年龄:
,城市:
country)
StaticDemo01{
p1
张三"
实例化对象
p2
李四"
31)
p3
王五"
32)
p1.info()
p2.info()
p3.info()
张三,年龄:
30,城市:
A城
李四,年龄:
31,城市:
王五,年龄:
32,城市:
以上代码确实实现了一些基本功能,但是此时的城市名称不叫“A城”而改成了“B城”,如果现在已经产生了5000个对象,那么就意味着此时就需要修改5000个对象中的country属性。
所以此时最好使用static关键字声明属性。
代码改为:
定义城市属性,有默认值,static
StaticDemo02{
---------------
修改之前
-------------"
Person.country
B城"
修改static属性,使用类名
修改之后
---------------修改之前-------------
---------------修改之后-------------
B城
由以上例程可以看出:
修改一个对象中的country属性,则其他对象的country属性也全部被改变,证明该属性是该类的所有对象所共享的。
每一个对象都有自己各自的堆栈空间,堆内存中保存着各自的属性,但是所有的static属性则是保存在了全局数据区中,所有的对象共同指向全局数据区中的一个内容,所以当一个对象修改之后,所有对象的该属性将全部被改变。
PS:
java中内存区域的划分:
栈内存:
保存对象的名称(访问的堆内存的地址)
堆内存:
保存每个对象的具体属性
全局数据区:
保存static类型的数据
全局代码区:
保存所有方法的定义
一般使用static属性的时候,最好使用类名称直接调用,采用“类名.属性”的形式进行调用。
同理,可以使用static关键字声明方法。
——此方法可