/*
* 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. 『C++』STL容器入门

    最近在学习opencv,因为C++基础很烂,所以遇到了不少问题,其中STL模块也是没少接触,特此简单了解一下STL的容器类型(主要是Vector)和迭代器的简单用法. C++ STL(标准模板库)是一 ...

  2. 【Java】【2】String和List相互转换

    正文: 1,String转List //常见的为逗号分隔 String str = "a,b,c"; List<String> list1 = Arrays.asLis ...

  3. [CodeForces - 614A] A - Link/Cut Tree

    A - Link/Cut Tree Programmer Rostislav got seriously interested in the Link/Cut Tree data structure, ...

  4. flex对象.show()的时候display变成block

    在css中设置display: none;的对象会出现这种情况. 在JavaScript中用.hide()隐藏的对象不会出现.

  5. 一、I/O操作(缓存流,数据流,对象流)

    一.缓存流 以介质是硬盘为例子说明,字节流和字符流的缺点: 每次读写的时候,都会访问硬盘,如果读写频率比较高的时候,性能不佳.为了解决问题,采用缓存流. 缓存流在读取的时候,会一次性读较多的数据到缓存 ...

  6. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  7. ifcfg-eth配置详解(CentOS6)

    1.基本配置形式 1.1 动态IP基本配置 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=dhcp DEVICE--网卡名,要与ifcfg-ethx中的 ...

  8. mac ci框架安装使用 memcached存session

    mac 安装memcached brew info memcached brew install memcached brew install memcached 安装过程具体不详细多讲 memcac ...

  9. jquery for&&each的用法

    var arr=['姚明','易建联','张继科']: each&&for用法 $.each(arr,function(index,value){ document.write(ind ...

  10. day_07_python_1124

    01 昨日内容回顾 数据类型补充: str <---> list split join list <---> set set(list) list(set()) list &l ...