package cn.itcast.api.string;

 public class StringDemo{
public static void main(String[] args){
//定义一个字符串。
String str = "abcd";
// str="haha";
System.out.println("str="+str); //================
System.out.println("=======多个引用指向同一个字符串========");
String s1 = "itcast";
String s2 = "itcast";
System.out.println(s1==s2); System.out.println("=======两个内容相同创建方式不同的字符串=======");
String s3 = "abc";
String s4 = new String("abc"); //s3和s4有什么不同呢?
/*
* s3创建,在内容中只有一个对象。
*
* s4创建,在内容中有两个对象。
* */
System.out.println(s3==s4);
System.out.println(s3.equals(s4));//true,因为Strng复写了equals方法,
//建立字符串自己的判断相同的依据。是通过字符串对象中的内容
//来判断的。 }
}
 package cn.itcast.api.string;

 public class StringDemo2 {
public static void main(String[] args){ /*
* "abcede"
*
* 1,字符串是一个对象,那么它的方法必然是围绕操作对象的数据而定义的。
* 2,你认为字符串中有哪些功能呢?
* 2.1:有多少个字符?
* int length()
*
* 2.2:字符的位置。
* int indexOf(char ch)
* 2.3:获取所需位置上的字符。
* char charAt(int index)
* 2.4:获取部分字符串。
* String substring(int beginIndex, int endIndex)
*
*
*
* */
String str = "abcde";
// System.out.println("length="+str.length());
int len = str.length();
System.out.println("len="+len); // System.out.println("index="+str.indexOf('d'));
int index = str.indexOf('e');
System.out.println("index2="+index); // System.out.println("char="+str.charAt(3));
char ch = str.charAt(4);
System.out.println("char="+ch); // System.out.println("subString="+str.substring(2,4));
String str1 = str.substring(2, 4);
System.out.println("subString="+str1);
}
}
 package cn.itcast.api.string;

 public class StringTest {

     public static void main(String[] args) {

         /*
* Stirng方法查找练习。
* 1,字符串是否以指定字符串开头。结尾同理。
* boolean startsWith(String)
* boolean endsWith(String)
*
* 2,字符串中是否包含另一个字符串。
* boolean contains(String);
* int indexOf(String)//如果返回-1表示不存在。
*
* 3,字符串中另一个字符串出现的位置。
* int indexOf(String)
*
* 4,将字符串中指定的字符串替换成另一个字符串。
* String replace(oldString newString);
*
* 5,字符串如何比较大小?
*
*
* 6,将字符串转成一个字符数组,或者字节数组。
* char[] toCharArray();
* byte[] getBytes();
*
* 7,将字母字符串转成大写的字母字符串。
* String toUpperCase()
* String toLowerCase()
*
* 8,将字符串按照指定的方式分解成多个字符串,“lisi,wangwu,zhaoliu”获取三个姓名。
* String[] split(String);
* */
//
String str="StringDemo.java";
boolean b1 = str.startsWith("Demo");
System.out.println(b1);//false //
boolean b2 = str.contains("Demo");//CharSequence x = "Demo";多态。
System.out.println(b2);//true
int x = str.indexOf("Demox");//-1 表示不存在。
System.out.println(x); //
String s = str.replace("haha", "Test");//没有替换内容时,结果是原串儿。
System.out.println("s="+s); //
char[] chs = str.toCharArray();
System.out.println(chs);
byte[] nums = str.getBytes();
System.out.println(nums); //
String upperString = str.toUpperCase();
System.out.println(upperString); //
String str2 = "lisi,wangwu,zhangsan";
String[] names = str2.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
} //5,字符串如何比较大小?
// int result = str.compareTo("cd");
int result = "ab".compareTo("cd");//只要想让对象具备比较大小的功能,只需要实现Compareable接口就行了。
System.out.println(result);
} }
 package cn.itcast.api.string;

 import java.util.Arrays;

 public class StringTest2 {

     public static void main(String[] args) {
/*
* 案例一:字符串数组
* {"abc","nba","cctv","itcast"}
* 要求从小到大排序。
*
*/
String[] strs = {"abc","nba","cctv","itcast"};
printArray(strs);
sortString(strs);
printArray(strs); /*
* 案例二:
* "witcasteritcasttyuiitcastodfghjitcast"有几个itcast
*
* 思路:
* 1,无非就是在一个字符串中查找另一个字符串。indexOf
* 2,查找到第一次出现的指定的字符串后,如何查找第二个呢?
* 3,无需再从头开始,只要从第一次出现的位置加上要找的字符串的长度的位置开始向后查找下一个第一次出现的位置即可。
* 4,当返回位置是-1时,说明查找结束。
*/
String str = "witcasteritcasttyuiitcastodfghjitcast";
String key = "itcast";
int count = getKeyCount(str,key);
System.out.println("count="+count);
/*int x = str.indexOf(key,0);//第一次从头开始找。
System.out.println("x="+x); int y = str.indexOf(key,x+key.length());//从指定起始位开始找。
System.out.println("y="+y); int z = str.indexOf(key,y+key.length());//从指定起始位开始找。
System.out.println("z="+z);*/ /*
* 案例三:
* “itcast_sh”要求,将该字符串按照长度由长到短打印出来。
* itcast_sh
* itcast_s
* tcast_sh
*
*
*/
String str1 = "itcast_sh";
printStrinByLength(str1);
} public static void printStrinByLength(String str1) {
//,通过分析,发现是for嵌套循环。
for (int i = 0; i < str1.length(); i++) {
for(int start = 0,end = str1.length()-i;end <= str1.length();start++,end++){
//根據start,end截取字符串。
String temp = str1.substring(start, end);
System.out.println(temp);
}
} } /**
* 获取key在str中出现的次数。
* */
public static int getKeyCount(String str, String key) {
//1,定义变量。记录每一次找到的key的位置.
int index = 0;
//2,定义变量,记录出现的次数。
int count = 0;
//3,定义循环。只要索引到的位置不是-1就继续查找。
while((index = str.indexOf(key,index))!=-1){
//每循环一次就要明确下一次查找的起始位置。
index = index+key.length(); count++;
}
return count;
} /**
* 字符串排序
* 思路:
* 1,以前有过int[] 排序,选择,冒泡。
* 2,字符串排序同理。
* 3,for嵌套循环。
* 4,循环中进行元素大小比较,满足条件位置置换。
*
* */
public static void sortString(String[] strs) {
for (int i = 0; i < strs.length; i++) {
for (int j = i+1; j < strs.length; j++) {
if(strs[i].compareTo(strs[j])>0){//对象比较用方法。compareTo.
swap(strs,i,j);
}
}
}
// Arrays.sort(strs);
} /**
* 数组元素的置换。
*
* */
private static void swap(String[] strs, int i, int j) {
String temp = strs[i];
strs[i] = strs[j];
strs[j] = temp;
} private static void printArray(String[] strs) {
for (int i = 0; i < strs.length; i++) {
System.out.print(strs[i]+" ");
}
System.out.println();
}
}
 package cn.itcast.api.stringbuffer;

 public class StringBufferDemo {

     public static void main(String[] args) {
/*
* StirngBuffer:
* 1,是一个字符串缓冲区,其实就是一个容器。
* 2,长度是可变的,任意类型都行。注意:是将任意数据都转成字符串进行存储。
* 3,容器中提供了很多对容器中数据的操作功能,添加,删除,修改。
* 4,所有的数据最终转成字符串。
* 5,和数组最大的不同就是,数组存储完可以单独操作每一个元素,每一个元素都是
* 独立的,而字符串缓冲区不是,所有存储的元素都被转成了字符串,而且最后拼成
* 了一个大的字符串。
* */ //1,创建一个字符串缓冲区对象,用于存储数据。
StringBuffer sb = new StringBuffer(); //2,添加数据。不断的添加数据后,要对缓冲区中的数据进行操作,必须转成字符串。
String str = sb.append(true).append("hehe").toString();
//sb.append("haah"); //sb.insert(2, "it");//在指定位置插入元素。 //sb.delete(1, 4);//删除。 sb.replace(1, 4, "cast"); sb.setLength(2);
System.out.println(sb);
//System.out.println(sb.reverse());
//System.out.println(str); //String s = "a"+5+'c';
//底层原理:
//s = new StringBuffer().append("a").append(5).append('c').toString();
}
}
 package cn.itcast.api.stringbuffer;

 public class StringBufferTest {

     public static void main(String[] args) {
/*int[] arr = [34,12,89,67];
* 将一个int数组中的元素转成字符串,格式[34,12,89,67]
*
*/
int[] arr = {34,12,89,67};
String str = toString_2(arr);
System.out.println(str);
} /**
* 缓冲区的应用,无论多少数据,什么类型都不中要,只要最终变成字符串,就可以使用StringBuffer
*
* @param arr
* @return
*/
public static String toString_2(int[] arr) {
//创建缓冲区,
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1){
sb.append(arr[i]+".");
}else{
sb.append(arr[i]+"]");
}
}
return sb.toString();
} public static String toString(int[] arr) {
//用字符串连接。
String str = "[";
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1){
str+=arr[i]+",";
}else{
str+=arr[i]+"]";
}
}
return str;
}
}
 package cn.itcast.api.stringbuffer;

 public class StringBuilderDemo {

     public static void main(String[] args) {
/*
* StringBuilder 和SringBuffer的区别。
*
* StringBuilder是非同步的,单线程访问效率高,
* StirngBuffer是同步的 ,多线程访问安全。
*
*/
} }
 package cn.itcast.comparedemo;

 public class Person implements Comparable{
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} /**
* 建立了Person对象判断是否相同的依据,只要是同姓名同年龄就是
* 同一个人。
* */
@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if(!(obj instanceof Person)){
throw new ClassCastException("类型错误");
}
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
} @Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
} /**
* 比较年龄大小的方法。
* */
@Override
public int compareTo(Object o) { if(!(o instanceof Person)){
throw new ClassCastException("类型错误");
}
Person p = (Person)o;
return this.age - p.age;
} }
 package cn.itcast.comparedemo;

 public class PersonDemo {
public static void main(String[] args){ }
}

《day17_String_StringBuffer》的更多相关文章

  1. 天河微信小程序入门《四》:融会贯通,form表单提交数据库

    天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数 ...

  2. 天河微信小程序入门《三》:打通任督二脉,前后台互通

    原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https ...

  3. 《社交网络》里的评分公式——ELO排名系统

    <社交网络>里的Mark Zackburg被女朋友甩后,在舍友的启发下,充分发挥了技术宅男自娱自乐的恶搞天分,做出了Facemash网站,对学校女生的相貌进行排名打分,结果网站访问流量过大 ...

  4. 原创:从零开始,微信小程序新手入门宝典《一》

    为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...

  5. 《InsideUE4》GamePlay架构(十)总结

    世界那么大,我想去看看 引言 通过对前九篇的介绍,至此我们已经了解了UE里的游戏世界组织方式和游戏业务逻辑的控制.行百里者半九十,前述的篇章里我们的目光往往专注在于特定一个类或者对象,一方面固然可以让 ...

  6. 《InsideUE4》-8-GamePlay架构(七)GameMode和GameState

    我的世界,我做主 引言 上文我们说到在Actor层次,UE用Controller来充当APawn的逻辑控制者,也有了可以接受玩家输入的PlayerController,和能自行行动的AIControl ...

  7. 《InsideUE4》-7-GamePlay架构(六)PlayerController和AIController

    PlayerController:你不懂,伴君如伴虎啊 AIController:上来,我自己动 引言 上文我们谈到了Component-Actor-Pawn-Controller的结构,追溯了ACo ...

  8. 《InsideUE4》-6-GamePlay架构(五)Controller

    <InsideUE4>-6-GamePlay架构(五)Controller Tags: InsideUE4 GamePlay 那一天 Pawn又回想起了 被Controller所支配的恐惧 ...

  9. 《InsideUE4》-5-GamePlay架构(四)Pawn

    <InsideUE4>-5-GamePlay架构(四)Pawn Tags: InsideUE4 我像是一颗棋 进退任由你决定 我不是你眼中唯一将领 却是不起眼的小兵 引言 欢迎来到Game ...

随机推荐

  1. MySQL OCP 考试,一个不错的网站

    http://www.aiotestking.com/oracle/category/exam-1z0-883-mysql-5-6-database-administrator/page/10/ 里面 ...

  2. java中身份证号15位转18位

    /** * 将15位转换为18位 * @param idCode 15位身份证号 * @return String 18位身份证号 */ public String toEighteen(String ...

  3. robotframework笔记4

    机器人框架概述   机器人框架是一个通用的开源的自动化测试框架 验收测试和验收测试驱动开发(ATDD).它具有易于使用的表格的测试数据 语法采用关键字驱动 测试方法.其检测能力可以通过测试库 用Pyt ...

  4. 创建SSTP VPN,适应win7, 控制台导入证书

    1. 按 视窗+r 打开运行,运行 mmc命令 2.打开控制台窗口 3.在默认界面 按 Ctrl+m 快捷键 打开添加单元 窗口,然后在其左侧列表双击 证书 项 4.在打开的证书管理单元 第一步中选择 ...

  5. PHP程序员面试技巧之口试题分享

    网络上流传很广的一部分php工程师面试题目,有些phper们认为这些很形式,天下面试题目一大把,不能考核一个人的真实水平,其实细细研究起来,无论怎样,能存在就表明其有存在的价值.下面小编整理了12条P ...

  6. Android之ScrollView嵌套ListView

    在ScrollView中嵌套使用ListView,ListView只会显示的内容只有一行多一点 解决方案: public class Utility { public void setListView ...

  7. 《JavaScript权威指南》读书笔记(三)

    日期:2015-12-05 浏览器location和history: replace不会显示历史,location会: history对象脚本不能真正访问,但支持三种方法:back().foward( ...

  8. PHP函数——parse_ini_file() 函数

    资料网址:http://www.w3school.com.cn/php/func_filesystem_parse_ini_file.asp 1.parse_ini_file() 函数解析一个配置文件 ...

  9. 自定义Encoder/Decoder进行对象传递

    转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...

  10. Java JDK 动态代理使用及实现原理分析

    转载:http://blog.csdn.net/jiankunking   一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理 ...