/*
* 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. layui 表格图片放大

    1. 表格塞图片 ,{title: '图片', width:120, templet: function(d) { return '<div onclick="show_img(thi ...

  2. DVWA--XSS解题过程

    XSS概念:通常指黑客通过HTML注入纂改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击. XSS有三种: 反射型xss:只是简单地把用户输入的数据反射给浏览器,简单来说,黑客往 ...

  3. getopt实现传参自动识别

    test.py #!/usr/bin/env python # -*- coding: utf-8 -*- import getopt import sys #-h-f-v为了下面的识别 opts,a ...

  4. WCF开发实战系列一:创建第一个WCF服务 转

    转 http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811064.html 在这个实战中我们将使用DataContract,Servic ...

  5. acl使用示例

    declare   v_count  number;  uprinciple varchar2(20);  principle  varchar2(20);  begin uprinciple := ...

  6. SecureCRT修改显示行数

    Scrollback buffer应该是保留的行数,初始值500,修改成自己想要的数值保存即可. 参考:http://blog.csdn.net/w410589502/article/details/ ...

  7. 使用Swagger2构建强大的RESTful API文档(2)(二十三)

    添加文档内容 在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,而描述主要来源于函数等命名产生,对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容.如下所示,我们通 ...

  8. excel 单元格0 不显示的最佳方法

    excel单元格设自定义格式, 条件:可以单元格内容判断后再设置格式.条件格式化只限于使用三个条件,其中两个条件是明确的,另个是“所有的其他”.条件要放到方括号中.必须进行简单的比较.例如这个条件:单 ...

  9. JS--理解参数,argument,重载

    ECMAScript函数的参数与大多数其他语言函数的参数不同.ECMAScript函数不介意传递进来多少个参数,也不在乎传递进来的参数是什么数据类型. 原由在于,ECMAScript中的参数在内部是用 ...

  10. python django 访问static静态文件

    settings 文件配置: STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)PROJEC ...