java基础学习05(面向对象基础02)
面向对象基础02
实现的目标
1.String类的使用
2.掌握this关键字的使用
3.掌握static关键字的使用
4.了解内部类
String类
实例化String对象
一个字符串就是一个String类的匿名对象,就是已经开辟了堆内存空间的并可以直接使用的对象。
1.采用直接赋值的方式进行操作。
String name = "zhangsan";
使用这种方式,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再开辟内存空间。
2.直接调用String类的构造方法(public String(String orignal))。
String name = new String("zhangsan")
使用这种方式,会造成内存浪费。因为一个字符串就是一个String类的匿名对象,使用new关键字,会开辟一个新的内存空间。

String 内容比较
1."=="(地址值比较)[str1 == str2]
2.equals()(内容比较)[str1.equals(str2)]
字符串的内容不可改变 字符串的内容一旦声明就不可改变,一个String内容可以改变实际上是通过内存地址的"断开-连接"变化完成的,而本身字符串的内容并没有任何变化。
String类的常用方法
String类中提供了大量的操作方法,常用的如下:
方法 效果
s.length() 返回s字符串长度
s.charAt(3) 返回s字符串中下标为3的字符
s.substring(0, 6) 返回s字符串中下标0到6的子字符串
s.indexOf("Hello") 返回子字符串"Hello"的下标
s.startsWith(" ") 判断s是否以空格开始
s.endsWith("hh") 判断s是否以"hh"结束
s.equals("Good World!") 判断s是否等于"Good World!"
==只能判断字符串是否保存在同一位置。
需要使用equals()判断字符串的内容是否相同。
s.compareTo("Hello World!") 比较s字符串与"Hello World!"在词典中的顺序,
返回一个整数,如果<0,说明s在"Hello World!"之前;
如果>0,说明s在"Hello World!"之后;
如果==0,说明s与"Hello World!"相等。
s.trim() 去掉s前后的空格字符串,并返回新的字符串
s.toUpperCase() 将s转换为大写字母,并返回新的字符串
s.toLowerCase() 将s转换为小写,并返回新的字符串
s.replace("World", "Universe") 将"World"替换为"Universe",并返回新的字符串
this关键字
用法:
1.this强调本类的方法
2.表示类中的属性
3.可以使用this调用本类的构造方法(必须放在构造方法的第一行)
this调用构造方法时一定要留一个构造方法作为出口,即程序中至少存在一个构造方法不使用this调用其它构造方法。
4.this表示当前对象
/**
*1.定义一个Student类并测试该类
*2.完成两个对象的比较操作,在比较时,首先进行地址比较,如果两个对象的地址相同,
* 则肯定是同一个对象,而如果地址不相等,则将一个个属性进行依次的比较。
*/
class Student{
private String stuid; //学号
private String name; //姓名
public Student(){
}
public Student(String stuid,String name){
this.setStuid(stuid);
this.setName(name);
}
//调用此方法时,存在两个对象:当前对象、传入的对象
public boolean compare(Student stu){
Student stu1 = this; //表示当前调用方法的对象
Student stu2 = stu; //传递到方法中的对象
if(stu1 == stu2){ //比较两个内存地址
return true;
}
if(stu1.stuid.equals(stu2.stuid)&&stu1.name==stu2.name){ //比较每个属性是否相等
return true;
}else{
return false;
}
}
public void setStuid(String stuid){
this.stuid = stuid;
}
public String getStuid(){
return this.stuid;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
/**
*1.编写测试类,测试以上代码
*/
class Demo02{
public static void main(String [] args){
Student stu1 = new Student("1114020116","张三");
Student stu2 = new Student("1114020116","张三");
if(stu1.compare(stu2)){
System.out.println("两个对象相等!");
}else{
System.out.println("两个对象不相等!");
}
}
}
Static关键字
在程序中如果用static声明变量的话,则此变量称为静态变量。如果很多对象有一个共同属性且值相同,可以使用static修饰该属性。因为static声明的属性是所有对象共享的。
/**
*1.定义一个Student类并测试该类
*/
class Student{
private String stuid; //学号
private String name; //姓名
static String city = "中国"; //使用static定义属性,有默认值
public Student(){
}
public Student(String stuid,String name){
this.setStuid(stuid);
this.setName(name);
}
public void setStuid(String stuid){
this.stuid = stuid;
}
public String getStuid(){
return this.stuid;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public String tell(){
return "我叫:"+this.name+" 学号是:"+this.stuid+" 目前在 "+city;
}
}
/**
*1.编写测试类,测试以上代码
*/
class Demo03{
public static void main(String [] args){
Student stu1 = new Student("1114020116","张三");
Student stu2 = new Student("1114020117","李四");
Student stu3 = new Student("1114020118","王五");
System.out.println("修改信息之前:"+stu1.tell());
System.out.println("修改信息之前:"+stu2.tell());
System.out.println("修改信息之前:"+stu3.tell());
System.out.println("--------------------------");
Student.city = "美国"; //修改static属性
System.out.println("修改信息之后:"+stu1.tell());
System.out.println("修改信息之后:"+stu2.tell());
System.out.println("修改信息之后:"+stu3.tell());
}
}

java基础学习05(面向对象基础02)的更多相关文章
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- Java学习 · 初识 面向对象基础一
面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...
- Python学习之面向对象基础
python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等 1.定义类,创建和使用对象 #定义类 class Student(obje ...
- Java最新学习线路(基础,源码,项目,实战)
如需获取以下学习资源请关注公众号:Java编程指南 我们为自学者编程的或初学java的小伙伴们准备了一整套完整的学习资源和文章,还有我自己在自学路上的一些总结和学习线路,希望能帮到小伙伴们,如果有什么 ...
- java基础学习总结——面向对象2
一.JAVA类的定义
- Java基础学习(三)—面向对象(上)
一.理解面向对象 面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...
- java基础学习总结——面向对象1
目录 一.面向过程的思想和面向对象的思想 二.简单理解面向对象 三.面向对象的设计思想 四.对象和类的概念 五.如何抽象出一个类? 六.类(对象)之间的关系 七.Java与面向对象 八.为什么使用面向 ...
随机推荐
- Hadoop生态系统
Hadoop 生态圈
- hdu4915 Parenthese sequence 贪心O(n)解法(new)
hdu4915 Parenthese sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K ...
- 原生JavaScript技巧大收集(11~20)-(终于又被我找到这篇文章了)
11.原生JavaScript加入收藏夹 function AddFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sT ...
- 浏览器内核与js引擎
摘要: 面试一个大公司的时候问到了一个问题,让我谈谈主要的浏览器内核以及他们的特点,当时并没有详细的回答,回来之后自己在网上找了找资料,总结了下分享给大家. 简介: 在维基百科上是这样介绍浏览器内核的 ...
- JSON的parse()和stringfy()方法
1.JSON.parse; 作用:将JavaScript对象表示法的JSON字符串转换为对象(字符串转对象). 语法:JSON.parse(text [, reviver]) text 必选. 一个有 ...
- sql group by 理解
order by是对字段进行排序,group by 是对字段进行分类,在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用组函数返回每一个组的汇总信息,另外,可以使用ha ...
- android版微信5.2.1更新 支持微信聊天记录备份到电脑上
昨天微信 5.2.1 for Android 全新发布了,和微信 5.2.1 for iPhone一样,支持拍照分享,可以把照片发送给多个朋友,最重要的一个更新是支持微信聊天记录备份到电脑(可以通过腾 ...
- Android4.4 往短信收件箱中插入自定义短信(伪造短信)
这段时间稍微有点空闲,把前一段学习Android做过的一些小项目整理整理.虽然没有什么工程量很大的项目,但是对于一个新手,解决这些问题还是花了一段时间.感觉还是非常有记录的意义呢~~~么么哒*—* 今 ...
- 用css布局的方法实现如果字符超过一定长度就显示成省略号
以前实现这种效果需要在程序里判断字符的长度,如果长度大于多少个字符,就截取字符,用省略号代替,而且是在服务器处理的,现在只需要用css的属性来操作,简单.实用.节省性能.不用做过多的程序判断.节约开发 ...
- python __file__ 与相对路径
用__file__ 来获得脚本所在的路径是比较方便的,但这可能得到的是一个相对路径,比如在脚本test.py中写入: #!/usr/bin/env pythonprint __file__ 按相对路径 ...