--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

1. String类

1.概述

String是一个特殊的类,一旦被初始化,那么就不能被改变,String类是一个被final修饰的类。

2.String的初始化

String s1=”abc”;这个表示的是一个对象,但是不是在内存中创建的,而是在内存的缓冲区(常量池)中创建了一个“abc”对象,只有通过new关键字创建的,才在堆中申请了内存空间,并且在栈中有声明的变量名称。

当有Strings1=”abc”,String s2=”abc”;都执行的话,当执行了s1后,会在内存的缓冲区(常量池)中创建了”abc”字符串对象,然后在执行s2的时候,那么先去内存缓冲区查找,要是存在了,那么就直接指向此对象,直接使用,所以,这两句话也就纯创建了一个”abc”字符串。

String str=new String(“xyz”);这是创建了两个对象,一个是先在内存中通过new创建了一个对象,然后在内存缓冲区中又创建了一个字符串“xyz”,然后在内存中的指向了内存缓冲区(常量池)中的对象。

在常量池中只有一个相等的字符串,但是在内存中可以有多个相等的字符串。

3.一道面试题

String str=new String(“xyz”);此语句产生几个对象,

如果常量池中已经有“xyz”字符串的话,那么就产生一个对象,要是常量池中没有”xyz”,那么就产生两个对象,一个是咋内存中,一个是在常量池中(内存缓冲区)

2. 字符串比较

有两种比较方法:==和equals。

==:比较的是内存地址,equals比较的内容

  public class Text {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(s1 == s2);// true 地址相等
System.out.println(s1.equals(s2));// true 内容相同
System.out.println(str1 == str2);// false 地址不相等
System.out.println(str1.equals(str2));// true 内容相同
System.out.println(s1 == str2);// false 地址不相等
System.out.println(s1.equals(str2));// true 内容相同
}
}

3. 获取

下面举了一些常用的方法,这些方法还有很多重载的,小想查看全面的,请查看API文档 java.lang.String包,里面方法很全

public class getString {
public static void main(String[] args) {
String str = "abcdasdfgh";
// 获取长度
System.out.println(str.length());
// 通过位置获取字符
System.out.println(str.charAt(3)); // 通过字符获取位置
System.out.println(str.indexOf('d'));// 从首位置开始查找,第一个字符d
System.out.println(str.indexOf('d', 5));// 从位置5开始查找,遇到的第一个字符d
// 获取子字符串的位置
System.out.println(str.indexOf("asd"));// 获取字符串asd在str中的位置
} }
结果:
10
d
3
6
4

4. 判断

下面举了一些常用的判断方法,还有很多重载和其他的方法都不一一举例了,有疑问参考API文档

public class judgeString {
public static void main(String[] agrs) {
String str = "zhangsan.java";
// 判断字符串是否为空
System.out.println(str.isEmpty());// false
// 判断字符串是否包含某内容
System.out.println(str.contains("."));// true
// 判断字符串是否是以指定前缀开始
System.out.println(str.startsWith("zhang"));// true
// 判断字符串是否是以指定后缀结束
System.out.println(str.endsWith(".java"));// true
}
}

5. 转换

1.将字符数组转换成字符串

构造函数:String(char [] values); String(char []values,start,end);将一部分字符数组转换成字符串

Static String copyValuesof(char [] );

2.将字符串转换成字符数组

toChatArray();

3.将字节数组转换成字符换

String(byte [] ); String(byte []values,start,end);

4.将字符串转换成字节数组

getBytes();

5.将基本数据类型转换成字符串

valuesOf(int  a);

public class ZhuanString {
public static void main(String[] args) {
String str="abcdef";
char [] cs={'h','e','l','l','o'};
//将字符串转换成字符数组
char [] newcs=str.toCharArray();
//将字符数组转换成字符串
System.out.println(new String(cs));
//将字符串转换成字节数组
byte [] bs=str.getBytes();
//将字节数组转换成字符串
System.out.println(new String(bs));
//将基本数据类型转换成字符串
System.out.println(String.valueOf(4));
} }

6. 分割,替换,截取

 public class Text {
public static void main(String[] args) {
String str="zhangsan,lisi,wangwu";
//分割
String [] ss=str.split(",");
for(String t:ss)
System.out.print(t+" ");
//替换
String s=str.replace('w', 'y');
String s1=str.replace("zhangsan", "sa");
//截取
String s3=str.substring(4);
String s4=str.substring(2,8); System.out.println("\ns="+s);
System.out.println("s1="+s1);
System.out.println("s3="+s3);
System.out.println("s4="+s4);
}
} 结果: zhangsanlisi wangwu
s=zhangsan,lisi,yangyu
s1=sa,lisi,wangwu
s3=gsan,lisi,wangwu
s4=angsan

7.去除空格,大小写转换,比较

 public class Text {
public static void main(String[] args) {
String str=" abc ";
//取出两边空格
String s1=str.trim();
//大小写转换
String s2=s1.toUpperCase();//转换成大写
String s3=s2.toLowerCase();//转换成小写
//比较 System.out.println("s1="+s1);
System.out.println("s2="+s2);
System.out.println("s3="+s3);
System.out.println(s2+"和"+s3+"比较大小="+s2.compareTo(s3));
//比较的时候是根据字符的ASCII进行的比较
//小于0表示s2小于s2
//等于0 表示s2和s3相等
//大于0 表示s2比s3大
}
}
结果:
s1=abc
s2=ABC
s3=abc
ABC和abc比较大小=-32
--------------------
ASP.Net+Android+IOS开发
.Net培训、期待与您交流! --------------------

黑马程序员_<<String类>>的更多相关文章

  1. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  2. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  3. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  4. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  5. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  6. 黑马程序员_ Objective-c 面向对象笔记详解

    1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...

  7. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

  8. 黑马程序员_ Objective-c 之block、protocol学习笔记

    一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值, ...

  9. 黑马程序员——OC语言 类和对象

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...

随机推荐

  1. Oracle EBS-SQL (WIP-4):检查检查成品标准作业是否勾选"固定"标识.sql

    select WE.DESCRIPTION                                                                   任务说明,        ...

  2. delphi 发送Windwos消息控制按钮(控制计算器里的某一个按钮)

    procedure TfrmMain.btnSendClick(Sender: TObject); var hCalc, h1: Cardinal; begin WinExec('calc', SW_ ...

  3. 理解Unity加载和内存管理

    转自:http://game.ceeger.com/forum/read.php?tid=4394#info Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBun ...

  4. java快速排序1000万无序数组JVM-Xmx=256M 耗时2s

    自己动手写排序算法,快速排序是比较不好写的了~ import java.util.*; class Test{ public void quickSort(int[] arr,int low,int ...

  5. Android UI ActionBar功能-在 Action Bar 上添加按钮

    在ActionBar上添加按钮实现某些功能最常见的Application的功能如:在ActionBar上添加一个搜索按钮: 首先官方文档说明:http://wear.techbrood.com/tra ...

  6. poj 3661 Running(区间dp)

    Description The cows are trying to become better athletes, so Bessie ≤ N ≤ ,) minutes. During each m ...

  7. C#反射概念以及实例详解【转】

    2009-08-28 13:12 佚名 互联网 我要评论(1) 字号:T | T C#反射概念以及实例向你介绍了C#反射的基本内容以及C#反射实例的简单应用,希望对你了解和学习C#反射以及C#反射实例 ...

  8. STL的移动算法

    要在自己定义类型中使用移动算法.须要在元素中提供移动赋值运算符.移动赋值运算符和std::move()详见<c++高级编程>第9章 class mystring { public: str ...

  9. 业务需求那些事,使用WCF如何实现业务需求!

    最近遇到一个新项目,需要与硬件结合,进行读取信息并保存在数据库中.业务要求也在昨天发布一个问题,当然感谢许多园内的朋友出谋划策,截图有真相! 关于这个问题,我做了如下假设.目前处于测试状态,代码比较简 ...

  10. C#的Split用法

    1.用字符串分隔: using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray= ...