A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林海东 中级黑马   /  2015-7-30 23:38  /  216 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、String类概述
1、String 类适用于描述字符串类型的食物,字符串一旦被建立,就不会改变,因为它默认被final修饰。
2、“对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象”。
3、空串与null的区别:空串是没有任何字符串而null是不再指向字符串。

-----------------------------------------------------------------------------------------------
二、String类构造方法详解

String(byte[] bytes)
     把一个字节数组转换成字符串

String(byte[] bytes, int index, int length)
     把一个字节数组的一部分转换为字符串  (从指定索引开始,截取指定长度)
String(char[] value)
     把一个字符数组转换成字符串
String(char[] value, int index, int length)
     把一个字符数组的一部分转换为字符串  (从指定索引开始,截取指定长度)

String类的构造方法可以把任意的字节数组和字符数组转换为字符串.


三、创建字符串对象的方式

第一种  String s = new String("abc");
第二种  String s ="abc";

注意:
数组:使用的是数组的  .lenght 属性
字符串:使用的是字符串的 .length()方法
-----------------------------------------------------------------------------------------------
四、String常见面试题

1、如何理解字符串一旦初始化就不可以被改变。
String s = "hello";
s += "world";
System.out.println(s);

不可以被改变说的是常量池中的值,并不是引用s(s是可以重新被赋值的)

2、
String s1 = new String("abc");
String s2 = "abc";
s1、s2有区别吗?
第一种方式:第一种方式在内存中存在两个"abc"字符串,一个是在常量池中,一个是在堆内存当中.
第二种方式:在内存中只存在一个"abc"在常量池中.
-----------------------------------------------------------------------------------------------
五、String类的判断功能
1、
boolean equals(Object obj) :
判断两个字符串是否相同(区分大小写

boolean equalsIgnoreCase(String str) :
判断两个字符串是否相同(不区分大小写)

boolean contains(String str):
判断这个字符串是否包含给定的字符串

boolean startsWith(String str):
判断字符串是否以给定的字符串开始

boolean endsWith(String str):
判断字符串是否以给定的字符串结束

boolean isEmpty():
判断字符串是否为空

2、以下程序运行会出现什么结果
String s1 = "";
String s2 = null;
System.out.println(s1.isEmpty()); //true
System.out.println(s2.isEmpty()); //NullPointerException空指针异常
-----------------------------------------------------------------------------------------------
六、模拟用户登录
思路回顾:
A:假设已经存在有了用户名密码,用String 定义就OK了
B:键盘录入数据用户名和密码.
C:把数据进行比较,如果正确就进入,不正确继续判断
D:给三次机会,明确了循环次数,用for循环解决

C、D代码提示:
if(userName.equals(name) && passWord.equals(pwd)){
                    System.out.println("输入正确,登陆成功");
                    break;
               } else{
                    //如果不匹配则提示相应的信息,并告知剩余次数。
                    //三次都输错,直接冻结账号
                    if ((2-i)==0) {
                         System.out.println("账号已被锁定,请与老刘联系");
                    }else {
                         System.out.println("登陆失败,您还有"+(2-i)+"次机会");
                    }
-----------------------------------------------------------------------------------------------

七、String类的获取功能
int length()                  
获取字符串的长度

char charAt(int index)         
获取指定索引处出现的字符

int indexOf(int ch)              
获取字符串中指定字符第一次出现的索引

int indexOf(String str)         
获取字符串中指定字符串第一次出现的索引

int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,
从指定的fromIndex开始搜索。

int indexOf(String str, int fromIndex)
返回指定字符串中第一次出现指定字符串处的索引,从指定位置开始搜索

String substring(int start)
截取字符串从指定位置开始,到末尾.

String substring(int start, int end)
截取字符串从指定位置开始到指定位置结束.

字符串中找索引有一个原则:包左不包右.

八、String类的转换功能
byte[] getBytes()              
把字符串转换成字节数组
char[] toCharArray()         
把字符串转换成字符数组
static String ValueOf(char[] chs)
把字符数组转换成字符串

static String valueOf( int i )
把(基本类型)int类型的一个数据转换为字符串类型

String toLowerCase()
把字符串全部转换为小写

String toUpperCase()
把字符串转换为大写

String concat(String str)
把两个字符串拼接.

九、String类的其它功能
String replace(char oldChar, char newChar )
用指定新的字符替换旧的字符

String replace(String oldString, String newString)
用指定新的字符串去替换老的字符串(新串和老串的长度可以不同)

String[] split(String regex)
以指定的字符串为标记切割字符串,返回一个字符串数组.

String trim()
去除字符串两端的空格

int compareTo(String str)
用字典顺序比较两个字符串.如果相同返回0.


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马