Java记录4--string
1.toString所有的类都默认自动继承了Objiect类
2.Object类中的toString方法返回的时类的名字和该哈希表码组成的一个字符串,
System.out.println(类对象名)实际输出的是该对象的toString方法所返回的字符串
3.所有类都从Object类继承了equals方法,源码如下
public boolean equals(Object obj)
{ return this == obj;}
4.object中的equals方法是直接判断调用equals的对象和形参obj所引用的对象是否为同一对象,即是否是内存中同一块存储单元,如果this和obj指向同一块内存对象,返回true,否则返回false,即使是内容完全相等的两块不同的内存对象,也会返回false
5.如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equals方法
6.string类已经重写了object中的equals方法,可以用来判断两个对象的内容是否相等
public class A
{
public static void main(String [] args)
{ //s1 s2 存放在堆区
String s1 = new String ("china");
String s2 = new String ("china");
System.out.println(s1.equals(s2));//true
System.out.println(s1 ==s2 );//false //s3 s4的china存放在数据区
String s3 = "china";
String s4 = "china";
System.out.println(s3.equals(s4));//true
System.out.println(s3 ==s4 ); //true
}
}
7,String常用方法总结
1.public char charAt (int index)
返回字符串中第index字符
2.public int length()
返回字符串的长度
3.public int indexOf (String str)
返回字符串中出现str的第一个位置
4.public int indexOf (String str , int fromIndex)
返回字符串中从fromIndex从from开始出现str的第一个位置
5.public boolean equalsIgnoreCase (String another)
比较字符串与another 是否一样(忽略大小写)
6.public String replace(char oldChar , char newChar)
在字符串中用new字符串 替代old字符串
7.public boolean startsWith (String prefix)
判断字符串是否已prefix字符串开头
8.public boolean endsWith(String suffix)
判断是否以suffix结尾
9.public String toUpperCase()
返回一个字符串的大写形式
10.ublic String toLowerCase()
返回一个字符串的小写形式
11.public String substring( int beginIndex , int endIndex)
返回该字符串从begin开始到end结尾的字符串
public class A
{
public static void main(String [] args)
{
String s1 = "zmzb",s2 = "ZMZB";
System.out.println(s1.charAt(1));//m
System.out.println(s1.length());//
System.out.println(s1.indexOf('m'));//1,z下标是0
System.out.println(s1.indexOf('s'));//-1
System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s2));//true String sr = "狂人日记";
String ssr = sr.replace('日','周');
System.out.println(ssr);//狂人周记
} }
8.StringBuffer类
由来:string类对象一旦创建就不可更改,如果经常对字符串内容进行修改,则使用string buffer,否则既耗时间又耗空间
string类中没有修改字符串的方法,但是stringbuffer类中大量拥有
9.string buffer类的构造函数
public StringBuffer()
创建一个空的没有任何字符的StringBuffer对象
public StringBuffer(int capacity)
创建一个不带字符,但具有指定出生容量的字符串缓冲区
public StringBuffer(String str)
创建一个StringBuffer对象,包含与str对象相同的字符序列
10.常用方法
public StringBuffer delete(int start ,int end)
删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用
public class A
{
public static void main(String [] args)
{
StringBuffer sb = new StringBuffer();
sb.append("abc");
sb.append("123");
System.out.println(sb);//abc123
sb.insert(3,"--");//在下标为3的位置插入
System.out.println(sb);//abc--123
sb.delete(2,6);
System.out.println(sb);//ab23
sb.reverse();//逆序
String str = sb.toString();//32ba
System.out.println(str);//32ba
}
}
Java记录4--string的更多相关文章
- 深入理解Java中的String
一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...
- 【原创】Java编译器对String的优化
首先看以下的代码: public static void main(String[] arge) { String str1 = new String("1234"); Strin ...
- 再解java中的String
今天看到一篇文章中,写了关于java中的String.我看了后,是我从学java来觉得是最好的一篇关于String类的文章.看了这篇文章你就会对String的认识会提高一个层次.故将原作者的文章特意转 ...
- (转)Java中的String为什么是不可变的
转自:http://www.importnew.com/7440.html String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了 ...
- 关于JAVA中的String的使用与连接(转)
JAVA中的String连接性能 Java中的String是一个非常特殊的类,使它特殊的一个主要原因是:String是不可变的(immutable). String的不可变性是Ja ...
- Java常量字符串String理解
Java常量字符串String理解 以前关于String的理解仅限于三点:1.String 是final类,不可继承2.String 类比较字符串相等时时不能用“ == ”,只能用 "eq ...
- Java中的String为什么是不可变的?
转载:http://blog.csdn.net/zhangjg_blog/article/details/18319521 什么是不可变对象? 众所周知, 在Java中, String类是不可变的.那 ...
- Java中的String与常量池[转帖]
string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象.下面介绍java中的String与常量池. 1. 首先String不属于8种 ...
- Java中的String与常量池
string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象.下面介绍java中的String与常量池. 1. 首先String不属于8种 ...
- java中字符串String 转 int(转)
java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...
随机推荐
- 在 input 上添加图标字体时无法添加的问题
效果:一个搜索框.如图: 实施过程:一开始,将搜索框分为2部分,用2个 input ,一个 search ,一个 button ,然后给 type="button" 的input ...
- JavaScript - let和var区别
前提 ES5只有函数作用域和全局作用域,var属于ES5.let属于ES6,新增块级作用域.目的是可以写更安全的代码. The let statement declares a block scope ...
- 吴裕雄 python 神经网络——TensorFlow 训练过程的可视化 TensorBoard的应用
#训练过程的可视化 ,TensorBoard的应用 #导入模块并下载数据集 import tensorflow as tf from tensorflow.examples.tutorials.mni ...
- happen-before原则
单线程happen-before原则: 在同一个线程中,书写在前面的操作happen-before后面的操作. 锁的happen-before原则: 同一个锁的unlock ...
- 【转】直播流程,视频推流,视频拉流,简介,SMTP、RTMP、HLS、 PLPlayerKit
原:https://www.cnblogs.com/baitongtong/p/11248966.html 1 .音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放 ...
- 【MySQL】安装及配置
" 目录 #. 概述 1. 什么是数据(Data) 2. 什么是数据库(DataBase, 简称DB) 3. 什么是数据库管理系统(DataBase Management System) 4 ...
- composer基本命令
安装:https://getcomposer.org/download/ { "require":{ // "厂商/类库":"版本号", & ...
- 吴裕雄 python 神经网络——TensorFlow 队列操作
import tensorflow as tf q = tf.FIFOQueue(2, "int32") init = q.enqueue_many(([0, 10],)) x = ...
- NAT-T和PAT(IPSec)
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥NAT-T技术介绍¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ 为什么TCP和UDP不能穿越:TCP和UDP有一个IP头的尾部校验(校验头部和负载 ...
- codeforces- Shortest path of the king
The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, becaus ...