/*
* String类的特点:
* 所有的""都是String的对象
* 字符串一旦创建就是常量,不能改变
*/
public class StringDemo {
public static void main(String[] args) {
//发现创建对象不需要new
String str = "abcd";
System.out.println(str);
//输出:abcd而不是内存地址,因为String类重写了toString方法
str = "efgh";
System.out.println(str);
//输出:efgh,之前不是说常量不能改变吗?这里的原因:
//字符串本身是一个对象,在堆内存中,字符串本质是一个字符的数组
//源码:private final char value[];有final修饰,因此String是常量
//str = "efgh"是在内存中重新开一片,str的指向改变了,而"abcd"字符串对象没有改变 }
}

String练习:

//1.统计某字符串中另一字符串出现的次数
public class Demo1 {
public static void main(String[] args) {
String s=new String("goodgoodstudy,daydayup");
int count=0;
JiShuQi(s,"good", count);
}
private static void JiShuQi(String s,String key, int c) {
int x=s.indexOf(key);
if (x==-1) {
System.out.println(key+"出现的次数为"+c);
return;
}
s=s.substring((x+key.length()));
c++;
JiShuQi(s, key, c);
}
}
//将一字符串首字母变成大写,其余字符小写
public class Demo2{
public static void main(String[] args) {
String s=new String("ksdhfEGBDebf");
Change(s);
} private static void Change(String s) {
String head=s.substring(0, 1).toUpperCase();
String sur=s.substring(1).toLowerCase();
String str=new String(head+sur);
System.out.println(str);
}
}
public class Zuoye3 {
/*
* 获取指定字符串中,大写字母、小写字母、数字的个数。
String s = "asdklf2234jlOLKJ"; 97--122小写
65-90 大写
48-57 0-9
* 思想:
* 1. 计数器,就是int变量,满足一个条件 ++
* 2. 遍历字符串, 长度方法length() + charAt() 遍历
* 3. 字符判断是大写,是小写,还是数字
*/
public static void main(String[] args) {
String s = "asdklf2234jlOLKJ";
int index=0;
JiShu(s,index,0,0,0);
} private static void JiShu(String s,int index, int Dcount, int Xcount, int Ncount) {
char x=s.charAt(index);
if (x>=65&x<=90) {
Dcount++;
}else if(x>=97&x<=122){
Xcount++;
}else if(x>=48&x<=57){
Ncount++;
}
index++;
if(index==s.length()){
System.out.println("大写字母:"+Dcount+"个,小写字母:"+Xcount+"个,数字:"+Ncount+"个");
return;
}
JiShu(s, index, Dcount, Xcount, Ncount);
}
}
/*StringBuffer
定义:可变字符数组 线程安全的 可变字符序列 内部定义了数组,数组没有final,可以改变,数组默认容量16
StringBuffer与String 的区别:String是一个不可变的字符序列
String一旦创建就是常量 不能改变
StringBuffer的 方法:append();
insert();
delete();
replace();
reverse();
toString();
StringBuffer与StringBuilder的区别:StringBuffer是jdk1.0版,线程安全,效率低,
StringBuilder是jdk1.5版,线程不安全,效率高
开发中用StringBuilder,因为开发速度快
*/
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer str=new StringBuffer();
fun1(str);
fun2(str);
fun3(str);
fun4(str);
fun5(str);
fun6(str);
} private static void fun6(StringBuffer str) {
// toString()转字符串;
System.out.println("方法6:toString()方法");
System.out.println("原字符串"+str);
String s=str.toString();//将StringBuffer转字符串类型
System.out.println("转字符串:"+s);
} private static void fun5(StringBuffer str) {
// reverse()方法:
System.out.println("方法5:reverse()方法");
System.out.println("原字符串"+str);
str.reverse();
System.out.println("翻转后字符串:"+str);
System.out.println(); } private static void fun4(StringBuffer str) {
// replace()方法
//replace(start, end, str);start:要替换字符的开始位置,end:替换的结束位置(不包含结束位置字符),str:替换的字符串
System.out.println("方法4:replace()方法");
System.out.println("原字符串为:"+str);
str.replace(1, 3, "-i love java-");
System.out.println("替换后的字符串为:"+str);
System.out.println();
} private static void fun3(StringBuffer str) {
// delete()方法
//delete(start, end)start:开始下标 end:结束下标()不包含结束下标的字符
System.out.println("方法3:delete()方法");
System.out.println("原字符串:"+str);
str.delete(3, 5);
System.out.println("删除后字符串:"+str);
System.out.println();
} private static void fun2(StringBuffer str) {
// insert(插入的位置(下标),插入的字符串)方法
System.out.println("方法2:insert()方法");
System.out.println("源字符串为:"+str);
str.insert(3, "java");
System.out.println("插入后字符串为"+str);
System.out.println();
} private static void fun1(StringBuffer str) {
// append()方法:追加
System.out.println("方法1:append()");
str.append("hello world");
System.out.println("原字符串为空,追加后为:"+str);
System.out.println();
}
}
/*结果:
* 方法1:append()
原字符串为空,追加后为:hello world 方法2:insert()方法
源字符串为:hello world
插入后字符串为heljavalo world 方法3:delete()方法
原字符串:heljavalo world
删除后字符串:helvalo world 方法4:replace()方法
原字符串为:helvalo world
替换后的字符串为:h-i love java-valo world 方法5:reverse()方法
原字符串h-i love java-valo world
翻转后字符串:dlrow olav-avaj evol i-h 方法6:toString()方法
原字符串dlrow olav-avaj evol i-h
dlrow olav-avaj evol i-h**/

java学习笔记15(String 类,StringBuffer)的更多相关文章

  1. 3.2常用类(java学习笔记)String与StringBuffer

    一.String String又称不可变字符序列. 我们看JDK源码中用于字符存储的数组有final修饰,final修饰变量就代表变量不能改变. 我们可以看API文档中对String的描述. Stri ...

  2. Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

    一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...

  3. java学习笔记之String类

    String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...

  4. java学习笔记5——String类常用方法

    1.字符串长度计算: int i = String1.length(); 2.字符串比较:1) equals()和equalsIgnoreCase //比较两个字符串对象的实体是否相同,相同输出tru ...

  5. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  6. Java学习笔记16---抽象类与接口的浅显理解

    抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...

  7. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

  8. 1.9(java学习笔记)object类及toString()与equals()方法

    object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...

  9. Java学习笔记day06_自定义类_ArrayList

    1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...

随机推荐

  1. 合并CSV文件.bat

    @echo off E:\保存文件夹 cd E:\文件所在的文件夹 dir copy *.csv all_keywords.csv echo @@@@@@@@@@@@@合并成功!@@@@@@@@@@@ ...

  2. IO多路复用和协程

    1.IO多路复用 作用:检测多个socket是否已经发生变化(是否连接成功/是否已经获取数据) 什么是进程.线程.协程以及它们的区别? 进程是资源分配的最小单元,其作用是进行数据隔离, 线程是cpu调 ...

  3. 1.Liunx 文件管理

    文件管理命令 1.基本命令:ls .cd .pwd .man 2.文件操作:touch . cp . rm . mv .ln . mkdir . rmdir 3.文件查看:cat .more .les ...

  4. NOIP2016玩具谜题

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singersi ...

  5. PyQt+Html+Js

    先做记录,后面有时间在仔细研究 https://www.cnblogs.com/jiangjh5/p/7209315.html?utm_source=itdadao&utm_medium=re ...

  6. PHP配置方法

    由于php是一个zip文件(非install版),安装较为简单,解压就行.把解压的 php5.2.1-Win32重命名为 php5.并复制到C盘目录下.即安装路径为 c:\php5 1 找到php目录 ...

  7. weex npm 报错 cb() never called!

    安装环境:windows7 使用npm 安装 出现错误后网上查找并没有解决,在准备放弃的时候试着用cnpm安装了一下,结果安装成功了,感觉应该网络问题,不知原因但完美解决

  8. Latex常用数学符号(转)

    http://blog.sina.com.cn/s/blog_642075770100u0np.html Latex常用数学符号(转) 1.指数和下标可以用^和_后加相应字符来实现.比如: 2.平方根 ...

  9. Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc

    我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free(). 注意:动态申请的内存使用完后必须要释放,否则会造成内 ...

  10. .net core Asp.net Mvc Ef 网站搭建 vs2017 1)

    1)开发环境搭建 首先下载安装vs2017  地址 :https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net ...