Java SE面向对象部分12面向对象基Word文档格式.docx

上传人:b****3 文档编号:6237147 上传时间:2023-05-06 格式:DOCX 页数:28 大小:595.07KB
下载 相关 举报
Java SE面向对象部分12面向对象基Word文档格式.docx_第1页
第1页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第2页
第2页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第3页
第3页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第4页
第4页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第5页
第5页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第6页
第6页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第7页
第7页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第8页
第8页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第9页
第9页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第10页
第10页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第11页
第11页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第12页
第12页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第13页
第13页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第14页
第14页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第15页
第15页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第16页
第16页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第17页
第17页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第18页
第18页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第19页
第19页 / 共28页
Java SE面向对象部分12面向对象基Word文档格式.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java SE面向对象部分12面向对象基Word文档格式.docx

《Java SE面向对象部分12面向对象基Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java SE面向对象部分12面向对象基Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。

Java SE面向对象部分12面向对象基Word文档格式.docx

//所在城市默认为南京

Stringcity="

南京"

;

publicPerson(Stringname,intage)

this.name=name;

this.age=age;

}

publicStringgetInfo()

return"

姓名:

"

+name+"

年龄:

+age+"

城市:

+city;

};

publicclassDemo01

publicstaticvoidmain(Stringargs[])

Personp1=newPerson("

张三"

30);

Personp2=newPerson("

李四"

31);

Personp3=newPerson("

王五"

32);

System.out.println(p1.getInfo());

System.out.println(p2.getInfo());

System.out.println(p3.getInfo());

先把内存结构图画出来

仔细观察,这三个对象的city属性的值都是南京,就好比说我现在所产生的人都是南京人。

那么这样的设计就会存在问题:

1、属性的内容重复存在,所有对象都有此属性

2、如果现在假设南京变为北京了,假设已经产生了100000个对象,则此时如果要修改其所在城市属性的内容,则肯定要修改100000遍

解决方法:

·

所有的对象都共同指向同一个city属性是最好的,有一个对象将city属性修改了,则其他的也会影响。

此时就需要使用static标识city属性了。

staticStringcity="

publicclassDemo02

再来看下内存结构

加入static声明之后所有的static类型的属性都保存在了全局数据区之中,所有的对象都共同拥有同一个city属性了。

publicclassDemo03

System.out.println("

----------修改city属性之前----------"

);

----------修改city属性之后----------"

//通过一个对象修改city属性值

p1.city="

北京"

验证下效果

一个对象修改static属性之后,其他的所有对象都可以更改了。

但是以上的程序有一些不妥,一个城市改变是应该由某个人(某个对象)去做的吗?

应该是由对象的集合体去做,对象的集合体就是类,所以一般在访问static属性的时候都采用如下格式:

类名称.static属性 

这是最合理的。

publicclassDemo04

//最好是通过类名称去修改static属性,即static属性可以被类名称直接访问

Person.city="

验证一下

有些时候也有人把static类型的属性称为类属性(类变量),因为可以直接由类名称进行访问。

既然static可以声明属性,则static也可以声明方法,使用static声明的方法称为类方法,也可以由类名称直接调用。

privateStringname;

privateintage;

privatestaticStringcity="

//只编写一个可以修改city的方法

publicstaticvoidsetCity(Stringcity)

this.city=city;

publicclassDemo05

//Person.city="

Person.setCity("

无锡"

这样验证下有没问题哈~

publicstaticvoidsetCity(Stringc)

//this是表示当前对象,static属性是绝对不能用this表示滴~

//因为static属性不绝对属于某一个对象

//this.city=city;

---->

这是错误滴哈~~~

city=c;

publicclassDemo06

//使用static声明的方法可以直接使用类名称调用

看下程序效果

Static使用的限制:

1、使用static声明的方法能否访问static声明的属性呢?

允许的

classDemo07

staticStringname="

Michael"

publicstaticvoidfun()

System.out.println(name);

编译通过哈~

2、使用static方法能否访问非static声明的属性呢?

不允许的

classDemo08

Stringname="

编译不能通过,说明是不允许滴~~~

3、使用非static方法能否访问static声明的属性呢?

classDemo09

publicvoidfun()

编译通过,说明是允许滴

4、使用非static能否访问非static声明的属性呢?

classDemo10

这个编译也通过,说明也是允许滴

Main方法调用其他方法的问题:

之前讲解方法的时候给了一个限制:

如果一个方法想被主方法直接调用,则此方法声明时必须加上publicstatic才可以。

publicclassDemo11

fun();

);

如果我们在fun()方法前没有加上static滴话,我们看下会报什么错误

publicclassDemo12

注意:

static类型的方法只能调用static类型的方法

publicclassDemo13

//static类型的方法只能调用static类型的方法

//如果fun()方法前不加static,则只能这样调用

newDemo13().fun();

程序执行正常

主方法的含义:

理解main方法

Stringargs[]:

表示运行时的参数==>

表示String类型的对象数组

publicclassDemo14

for(inti=0;

i<

args.length;

i++)

System.out.println(args[i]);

我们发现没有内容输出哈,那我们在javacDemo14.java后面跟上几个数据哈,以空格分开

所有的参数会在命令后面加入空格的形式出现。

我们做个练习哈~

publicclassDemo15

//必须输入两个参数

if(args.length!

=2)

//表示不是两个参数,则要退出系统

运行参数不正确,正确的格式为:

javaDemo15用户名密码"

System.exit

(1);

//之后的程序就表示肯定已经成功的输入了用户名和密码哈~~~

StringuserName=args[0];

StringuserPasswd=args[1];

//判断用户名是否为abc,密码是否为123哈~~~

//为什么现在要用字符串.equals去判断而不是用username调用equals哈~

//这样可以有效滴避免NullPointerException

if("

abc"

.equals(userName)&

&

123"

.equals(userPasswd))

欢迎访问哈~~~"

else

用户名和密码不正确哈~~~"

验证一下程序

解释:

为什么要把字符串放在前面比较

publicclassDemo16

Stringstr="

;

System.out.println(str.equals("

));

程序执行下,看下有没问题哈~

结果为true,没有出错哈,但是大家知道str是引用数据类型哈,如果str值为null空的话,就会出现问题。

publicclassDemo17

Stringstr=null;

程序提示NullPointerException错误哈~

那我们现在把str和字符串交换下位置看下效果

publicclassDemo18

.equals(str));

字符串永远不会为空哈,所以不会报NullPointerException错误哈~

因此我们在开发中经常把字符串写在前面,然后调用equals方法进行比较哈,这样可以避免出现错误~~

Static的基本概念已经掌握清楚了,那么还可以在以下一种情况下使用:

如果现在想统计一个类到底产生了多少个

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2