您的位置:首页 > 编程语言 > Java开发

JAVA学习第二十九课(常用对象API)- String类

2014-10-14 00:28 405 查看
多线程告一段落,开始常用对象API的涉及,背也要背下来!!!

日后开发,遇见最多的对象是文字,也就是字符串

String类

字符串是一个特殊对象

字符串一旦初始化就不可以被改变

一、特点

public class Main {
public static void main(String[] args)
{
Demo1();
System.out.println("--------------");
Demo2();
}
/*演示字符串的第一种定义方式,并明确字符串常量池的特点*/
private static void Demo1()
{
String s1 = "asd";
s1 = "sd";//s1只是字符串的引用,而字符串“asd”本身不变
String s2 = new String("sdf");
System.out.println(s1);
s2 = "sd";
System.out.println(s2==s1);//s1 和 s2实际上指向的同一个地址值
//sd储存在缓冲区(字符串常量池)
//如果没有,就创建,没有就不创建
}
/*演示字符串的第二种定义方式,*/
public static void Demo2()
{
String s = "abc";//在字符串常量池中创建一个对象
String s1 = new String("abc");//没有在字符串常量池中创建,在堆内存创建对象两个对象
//一个是s1 一个“abc”
System.out.println(s == s1);//false,比较的地址值不一样
System.out.println(s.equals(s1));//true
/*String类中的equals复写了Object中的equals建立了String类
* 自己的判断字符串对象是否相同
* 也就是比较字符串内容*/
System.out.println("s = "+s);
System.out.println("s1 = "+s1);
}
}


二、构造函数


public class Main
{
public static void main(String[] args)
{
StringconstructorDemo1();
charDemo();
}
public static void StringconstructorDemo1()
{
String s = new String(); // 等效于String s = "";地址值不一样,不等效String s = null
byte[] sub = {97,66};
String s1 = new String(sub);
System.out.println("s1 = "+s1);
}
public static void charDemo()
{
char[] ch = {'a','b','c','d','e','f'};
String string = new String(ch);//将数组变成字符串,只能是byte 和 char
System.out.println("string = "+string);

String string1 = new String(ch,0,3);//从0角标开是截取3个字符
System.out.println("string1 = "+string1);
//String类剩下的方法,查手册
}


三、字符串涉及的方法

完全以代码演示

/*
* 需求:
* 按照面向对象的思想学习字符串的方法
* "abcdefg"
* 1.字符串的长度
* 2.d在字符串的位置
* 3.....
* */
public class Main
{
public static void main(String[] args)
{
//StringMthodDemo1();//获取
//StringMthodDemo2();//转换
//StringMthodDemo3();//判断
StringMthodDemo4();//比较
}

public static void StringMthodDemo1()//一、获取
{
String str = "abcdefghijk";

/*  1. 获取字符串长度 int length()  */
int len = str.length();
System.out.println("str len = "+len);

/*   2.  根据位置获取字符  char charAt(int index) */
char wz = str.charAt(3);
System.out.println("索引为3的字符 "+wz);

/*   3. 根据字符获取字符所在的位置   indexOf (重点)*/

int iwz = str.indexOf('x');//写'a' 也行,写97也行(获取参数第一次出现的位置)
System.out.println("a 的位置"+iwz);//-1表示不存在

//3.1重载形式
int iwz1 = str.indexOf('d',2);//返回在此字符串中第一次出现指定字符串处的索引,从指定的索引开始搜索
System.out.println("d在字符串的位置 "+iwz1);
//3.2重载形式
int iwz2 = str.indexOf("cd");//返回指定字符串在此字符串中第一次出现指定字符串处的索引
System.out.println("字符串cd第一次出现的位置 "+iwz2);
//3.3
int iwz3 = str.indexOf("cd",1);

//lastindexOf()//返回在此字符串中第最后一次出现指定字符串处的索引,同上(必须会)

/*   4.  截取部分子串  substring(int beginIndex,int beginIndex) */
String sub = str.substring(0,3);//从 beginIndex 到 “beginIndex-1” 处的子串
System.out.println("索引从0-2的子串 "+sub);
//..........手册
}
public static void StringMthodDemo2()//二、转换
{
String str = "abc,efg,hij,lmn,opq,rst";

/*  1. 将字符串变成字符串数组(也就是将字符串分割成若干段)split */
String[] arr = str.split(",");//以“ ,”为规则切割,涉及到正则表达式
for(String i : arr)
{
System.out.println(i);
}
/*  2. 将字符串变成字符数组 (分割成单个字符) toCharArray*/

char[] arr1 =  str.toCharArray();
for(char i : arr1)
{
System.out.println(i);
}

/*  3.  将字符串变成字节数组 etBytes*/
String str1 = "abc阿萨德";//abc 3个字节,三个字 6个字节
//ASCII是美国的,中国也有自己的GB2312 对应的二进制码表
byte[] g = str.getBytes();
for(byte i : g)
{
System.out.println(i);
}

/*  4. 字母大小写相互转换  toUpperCas */

String 	str2 = "asd";
String 	str3 = "AAAA";
String t1 = str2.toUpperCase();//变大写
String t2 = str3.toLowerCase();//变小写
System.out.println("UP "+t1 +"++++ "+" Lower "+t2);

/*   5.  字符替换 replace  */

String 	str4 = "asfsd";
String t3 = str4.replace('s', 'a');//''假设s不存在,就无结果,返回原串
System.out.println("字符替换"+t3);
String t4 = str4.replace("asf", "aaa");
System.out.println("子串替换"+t4);

/*   6. 去除字符串两端空格   trim (有用)  */
//比如说发短信给10086  有时候习惯性的按一个空格,但是不支持这个空格,所以trim去除这个空格
System.out.println("    abcd     ".trim());

/*   7. 将字符串进行连接   */

System.out.println("asd".concat("asd"));//concat的核心代码就是 "asd"+"asd"
/*   8.  */
System.out.println(String.valueOf(25)+0);//将25转换为字符串 再与0连接  ->  println(""+25+0);
}

public static void StringMthodDemo3()//三、判断
{
/*  1. equals  */
String Str1 = "asd";
String str2 = "ASD";
boolean flag = Str1.equals(str2);
System.out.println(flag);

/*  2.  equalsIgnoreCase  */
System.out.println(Str1.equalsIgnoreCase(str2));//忽略大小写对字符串的影响
//相当于 Str1.equals(str2.toLowerCase());  当然比较烂

/*  3. 字符串中是否包含指定字符串 contains*/

System.out.println("asdfghj".contains("fgh"));

/*   4. 字符串是否以指定字符串开头或结尾  startsWith  endsWith */

System.out.println("asdfghjk".startsWith("asd")+"......"+"asdfghjk".endsWith("jkl"));

/*    ......    */
}
public static void StringMthodDemo4()//四、比较
{
//按照字典序比较 compareTo
String str1 = "abc";
String str2 = "efg";
System.out.println(str2.compareTo(str1));//等于0 :str1相等str2  , 大于0 :str1大于str2,小于0: str1小于str2

}
}


都是死东西,背也要背下来

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: