Object类和String类
Object类
Object类是Java语言中的根类,即所有类的父类。
equals方法
返回值类型为:boolean类型
用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。
例子:
package com.oricle.object; public class Person extends Object{
private String name;
private int age;
public Person(){ }
public Person( String name,int age){
this.age=age;
this.name=name;
}
//复写父类的equals方法,实现自己的比较方式
public boolean equals(Object obj) {
//判断对象是否为空
if(obj ==null){
return false;
}
//判断当前调用equals方法的对象和传递进来的对象是否是同一个
if(obj ==this){
return true;
}
//判断传递进来的对象是否是Person类型
if(obj instanceof Person){
//将obj向下转型为Perosn引用,访问其属性
Person p=(Person)obj; return this.age==p.age;
}
return false;
} }
测试类:
package com.oricle.object; import java.util.ArrayList; public class Demo01 { public static void main(String[] args) {
Person p1=new Person("江小鱼",3);
Person p2=new Person("花无缺",3);
System.out.println(p1==p2);//判断两个对象地址相等
System.out.println(p1.equals(p2));//重写后判断内容相等 } }
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
toString方法
返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。如下:
package com.oricle.object; public class Person extends Object{
private String name;
private int age;
public Person(){ }
public Person( String name,int age){
this.age=age;
this.name=name;
}
//复写父类的equals方法,实现自己的比较方式
public boolean equals(Object obj) {
//判断对象是否为空
if(obj ==null){
return false;
}
//判断当前调用equals方法的对象和传递进来的对象是否是同一个
if(obj ==this){
return true;
}
//判断传递进来的对象是否是Person类型
if(obj instanceof Person){
//将obj向下转型为Perosn引用,访问其属性
Person p=(Person)obj; return this.age==p.age;
}
return false;
}
//重写toString方法
public String toString() { return "name:"+name;
} }
测试类:
package com.oricle.object; import java.util.ArrayList; public class Demo01 { public static void main(String[] args) {
Person p1=new Person("江小鱼",3);
Person p2=new Person("花无缺",3);
System.out.println(p1==p2);
System.out.println(p1.equals(p2));
//重写toString方法
System.out.println(p1.toString()); } }
结果如下:
String类
构造方法
把字节数组作为对象的内容
package com.oricle.String; public class Gouzao { public static void main(String[] args) {
//48为0,97为a,65为A
byte[] bytes={
97,98,99,100
};
String str =new String (bytes);
String str2 =new String (bytes,1,2);//创建String对象,把一部分数组元素作为字符串的内容,
//参数offset为数组元素的起始索引位置,参数length为要几个元素
System.out.println(str);
System.out.println(str2); } }
结果:
创建String对象,把字符串数组元素作为字符串的内容
char[] chs = new char[]{'a','b','c','d','e'};
String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容
String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,
//参数offset为数组元素的起始索引位置,参数count为要几个元素
System.out.println(s4);
System.out.println(s5);
结果:
创建String对象str,字符串内容为sre,判断是否与已存在字符串ss相等,
String ss="sre";
String str=new String("sre");
System.out.println(ss.equals(str));
结果为true,String类进堆,优先创建内存,然后调用内容相同已经有的字符串地址,不会再开新的内存,节省空间
String类中的方法查找
package com.oricle.String1; public class Demo1 { public static void main(String[] args) {
// TODO Auto-generated method stub
char[] ch={'a','b','c','d','e'};
String str=new String(ch);
System.out.println(str);
int len=str.length();
System.out.println(len);
//截取
String s1=str.substring(2);//从起始位置一直截取到最后
System.out.println(s1);
//总起始位置截取到结束位置(包头不包尾,顺序不能乱)
System.out.println(str.substring(2, 4));
//检索开头字母
String st="IloveJava";
String s2="Il";
String s3="Java";
System.out.println(st.startsWith(s2));//开头
System.out.println(st.endsWith(s3));//结尾
//判断字符串中是否包含子字符串
String s4="i love java java";
String s5="java";
System.out.println(s4.contains(s5));
//indexof 如果没有该字符串则返回-1
System.out.println(s4.indexOf(s5));
//将字符串转成字节/字符数组
String s6="你是人则很难";
/*byte[] b1=s6 .getBytes();
for(int i=0;i<b1.length;i++){
System.out.print(b1[i]+"");
}
char[]c1=s6.toCharArray();
for(int i=0;i<c1.length;i++){
System.out.println(c1[i]+"");
}*/ for(int i=0;i<s6.length();i++){
byte[] b1=s6 .getBytes();
System.out.print(b1[i]+"");
char[]c1=s6.toCharArray();
System.out.println(c1[i]+"");
} //判断字符串内容是否相同
String s8="Oricle";
String s9="oricle";
System.out.println(s8.equals(s9));
System.out.println(s8.equalsIgnoreCase(s9));
//tostring
System.out.println(s8.toString()); //tolowercase
System.out.println(s8.toLowerCase());
//touppercase
System.out.println(s9.toUpperCase()); } }
练习题目:
package com.oricle.String1; public class Demo1 { public static void main(String[] args) {
// TODO Auto-generated method stub getnum("ORIclee12345");
getword("fainlFAF");
getci();
}
//1.获取指定字符串中,大写字母、小写字母、数字的个数。
public static void getnum(String str){
int big=0,
small=0,
number=0;
// String s10="ORIcle1234";
// char[]c2=s10.toCharArray();
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
// System.out.println(c);
if (c>='A' && c<='Z') {
big++;
} else if (c>='a' && c<='z') {
small++;
} else if (c>='0' && c<='9') {
number++;
} }
System.out.println("大写字母个数:"+big);
System.out.println("小写字母个数:"+small);
System.out.println("数字个数:"+number); }
//将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串
public static void getword(String str){
String head=str.substring(0,1);
String body=str.substring(1);
String neww=head.toUpperCase()+body.toLowerCase();
System.out.println(neww);
}
//查询大字符串中,出现指定小字符串的次数。如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。
public static void getci(){
String s1="hellojava,nihaojava,javazhenbang";
String s2="java";
int count=0;//出现次数
int index=-1;//出现位置下标
while((index=s1.indexOf(s2)) != -1){
count++;
s1=s1.substring(index+s2.length());
System.out.println(s1);
}
System.out.println(count); } }
Object类和String类的更多相关文章
- Java的常用类——Object类、String类
Java的JDK中提供给我们很多封装好的类就是Java API,可以直接调用. Java 的API(API: Application(应用) Programming(程序) Interface(接口) ...
- Java Object类 和 String类 常见问答 6k字+总结
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- C#中 StringBuilder类 与 String类的区别---(转)
在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代 ...
- Hadoop: Text类和String类的比较
一般认为Text类和String类是等价的,但二者之间其实存在着不小差别: 以<Hadoop权威指南>中的案例为例,给定字符串 String s = "\u0041\u00DF ...
- [Day15]常用API(Object类、String类)
1.Java的API(API: Application(应用) Programming(程序) Interface(接口)) Java API是JDK中提供使用的类,类已经将底层代码进行封装 在JDK ...
- Java 基础 常用API (Object类,String类,StringBuffer类)
Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...
- 07 Object类,Scanner,Arrays类,String类,StringBuffer类,包装类
Object类的概述:* A:Object类概述 * 类层次结构的根类 * 所有类都直接或者间接的继承自该类* B:构造方法 * public Object() * 子类的构造 ...
- (1)Object类 (2)包装类和数学处理类 (3)String类
1.Object类1.1 基本概念 java.lang.Object类是Java类层次结构的根类,任何类都是Object类的直接/间接子类. 1.2 常用的方法(重点) Object() - 无参构造 ...
- Java学习(API及Object类、String类、StringBuffer字符串缓冲区)
一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就 ...
随机推荐
- 我的省选 Day -14
Day -14 07:43:27 到机房了,不知道早上要做什么题,要不去选一题NOI原题来试试水好了 (因为NOI的原题质量比较有保证吧..) 09:11:22 正在做NOI2016的网格 开始写自己 ...
- CTS/APIO后文化课游记
根据ghj1222的尿性,干什么事都要写一个游记划水记啥的...然后就写嘛... 现在是5.30微机课,先开个坑,学校6.5放假,我将于6.5后开始更新本文 APIO回来后发生的事真的特别多...有的 ...
- Kipmi0 占用CPU 100%
查看当前正在运行的进程发现kipmi0进程占用率达到100% kipmi -% of the CPUs, %/% comes when the machine is idle? A second is ...
- 自定义标签遇到的问题unable to load tag handler class "XX" for tag "XX"
xxxx.tld文件的<tag-class>路径不正确,当时把until写成util了 摘自:http://zhidao.baidu.com/link?url=HP4tjHit2EXokI ...
- Decorator模式(装饰器模式)
Decorator模式? 假如现在有一块蛋糕,如果只涂上奶油,其他什么都不加,就是奶油蛋糕.如果加上草莓,就是草莓奶油蛋糕.如果再加上一块黑色巧克力板,上面用白色巧克力写上姓名,然后插上代表年龄的蜡烛 ...
- 洛谷2018寒假集训tg第二次比赛第二题Princess Principal题解
这算不算泄题啊...被kkk发现会咕咕咕吧. 题目大意:给定一个数列a,与常数n,m,k然后有m个询问,每个询问给定l,r.问在a[l]到a[r]中最少分成几段,使每段的和不超过k,如果无解,输出Ch ...
- 【ACM】拦截导弹 - 0-1背包问题
拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...
- (转)/etc/sysctl.conf 调优 & 优化Linux内核参数
/etc/sysctl.conf 调优 & 优化Linux内核参数 from: http://apps.hi.baidu.com/share/detail/15652067 http://ke ...
- JSP标签和JSTL标签注意点
1.转发和重定向问题 当前项目:/Test 转发路径:"/"根目录表示当前项目"/Test","/login.jsp"就是"/Te ...
- logAB = logA + logB; A,B>0
令 X = logA, Y = logB, Z=logAB .2x = A, 2y = B, 2z = AB, 则有 2z = AB = 2x * 2y = 2x+y ,有z = x+y,即 logA ...