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. 最牛B的编码套路(转)

    转自:http://blog.csdn.net/happydeer/article/details/17023229 最近,我大量阅读了Steve Yegge的文章.其中有一篇叫"Pract ...

  2. 如何编写跨平台的Java代码

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. 【CodeVS 1038】一元三次方程

    题意 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程. 给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的 ...

  4. 创建高性能移动 web 站点

    如果你的网站3秒钟没有响应,人们就会失去兴趣了.为了满足响应快这个愿望,需要一个不同的方法在手机上进行分析,设计和测试. 这篇文章将会对Johan Johansson在2013年4月提出" ...

  5. [saiku] JCR在saiku中的运用原理

    转载自: 什么是JAVA内容仓库(Java Content Repository)(1) 什么是JAVA内容仓库(Java Content Repository)(2) 什么是JAVA内容仓库(Jav ...

  6. python中的popen和subprocess

    import os from subprocess import Popen, PIPE res = os.popen('xx.exe E:\\test\\file1 E:\\test\\file2' ...

  7. js打印图形

    1. js绘画金字塔 思想:先画n-i个空格,再画2*i-1个*号,再画n-i个空格(此处可以省略),一行画完之后换行:循环下一行(先判断每行的空格数和*号与行数间的关系) var  n=window ...

  8. form表单提交过程

    本文为转载文章! 今天,我将站在HTML和单纯的Asp.net框架的角度来解释它们的工作方式,因此,本文不演示WebForms服务器控件的相关内容. 简单的表单,简单的处理方式 好了,让我们进入今天的 ...

  9. 查看Linux硬件配置信息

    在网上找了N久,发现了一篇不错的文档,转载一下: 1.查看机器所有硬件信息: dmidecode |more dmesg |more 这2个命令出来的信息都非常多,所以建议后面使用"|mor ...

  10. [译]Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架

    第一课:开始使用Quartz框架 在你使用调度器之前,需要借助一些具体的例子去理解(谁愿意只是猜啊?).你可以使用SchedulerFactory类来达到程序调度的目的.有一些Quartz框架的用户可 ...