JAVA-String,StringBuilder,StringBuffer例子(基础必备)
package com.net.xinfang.reflect; import java.io.UnsupportedEncodingException; /**
* String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;
* 但它又是一种特殊的对象,有其它对象没有的一些特性。 String实际上是使用字符数组来存储的数据的。
*
* @author xinfang
*
*/
public class string002 {
public void string1() throws UnsupportedEncodingException {
String s1 = "abc";
String s2 = new String("defa");
System.out.println(s1 + s2);
char c = s1.charAt(0);// 获取字符串第一个值(截取一个字符 )
System.out.println(c);
int value1 = s2.compareTo(s1);// 比较字符串大小,一次比较字符的编码,大于则返回大于0的值,相等为0则继续比较,小于则返回小于0的值
System.out.println(value1);
int value2 = s2.compareToIgnoreCase(s1);// 忽略大小写的比较,原理同上
System.out.println(value2);
String s3 = s1.concat(s2);// 字符串的连接,使用“+”进行连接,不仅可以连接字符串,也可以连接其他类型。
System.out.println(s3);
boolean b1 = s2.endsWith("a");// 判断字符串是否以‘a’结尾
boolean b5 = s2.startsWith("d");// 判断字符串是否以‘d’开始
System.out.println(b1 + "" + b5);
boolean b2 = s2.equals(s1);// 判断s2与s1是否相等
boolean b3 = s2.equalsIgnoreCase(s1);// 忽略大小写的比较相等
System.out.println(b3 + "" + b2);
byte[] b4 = s1.getBytes("gb2312");// 字符串转换为byte数组(获取字节数)
System.out.println(b4);
int index1 = s1.indexOf("a");// 查找特定字符串第一次出现的位置,不存在则返回-1
int index2 = s1.indexOf('d', 2);
int index3 = s1.lastIndexOf("c");// 查找最后一次出现的位置
System.out.println(index1 + "" + index2 + "" + index3 + "" + s1.length());
String s4 = s1.replace("a", "A");// 替换指定的所有字符串
String s5 = s1.replaceAll("b", "12");// 替换某个特定的字符串
String s6 = s1.replaceFirst("a", "2");// 替换第一个出现的字符串
System.out.println(s4 + "-" + s5 + "-" + s6);
String s7 = "a,b,c,d,e,f";
String s8[] = s7.split(",");// 以某一个字符进行分割字符串
for (String s9 : s8) {
System.out.println(s9);
}
String s10[] = s7.split(",", 2);// 拆分为2个字符串数组
for (String s11 : s10) {
System.out.println(s11);
}
String s12 = s1.substring(1);// 取索引值为1的值
String s13 = s1.substring(0, 2);// 取索引值0<=index<2的值
System.out.println(s12 + s13);
String s14 = "AbC123";
String s15 = s14.toLowerCase();// 全部转换为小写
System.out.println(s15);
String s16 = s14.toUpperCase();// 全部转换为大写
System.out.println(s16);
String s17 = " abc abc123 ";
String s18 = s17.trim();// 去掉字符串两端的空格,不会去掉字符串中间的空格
System.out.println(s18);
int n = 10;
String s19 = String.valueOf(n);// 将其他类型转换为字符串类型
System.out.println(s19);
boolean b6 = s19.contains("1");// 判断是否包含1
System.out.println(b6);
String s20 = new String("123456789");
char[] s21 = s20.toCharArray();// 将字符串转换数组
for (char ch : s21) {
System.out.println(ch);
}
// 字符串反转
String s22 = "";
for (int i = s21.length - 1; i >= 0; i--) {
s22 += s21[i];
}
System.out.println(s22);
boolean b7 = s22.isEmpty();// 判断字符串长度是否为0,为0-true,不为0-false
System.out.println(b7);
int n1 = s22.hashCode();// 获取字符串的hash代码
System.out.println(n1);
/*
* String是不可变字符串对象,StringBuilder和StringBuffer是可变字符串对象(其内部的字符数组长度可变)
* StringBuffer线程安全,StringBuilder非线程安全。
*/ }
public void string2() {
/**
* 简单来讲,“==”测试的是两个对象的引用是否相同, 而equals()比较的是两个字符串的值是否相等。
* 除非你想检查的是两个字符串是否是同一个对象,否则你应该使用equals()来比较字符串。
*/
String str = "abc";
String str1 = "abc";
String str2 = new String("abc");
System.out.println(str == str1);// true
System.out.println(str1 == "abc");// true
System.out.println(str2 == "abc");// false,”abc”是位于String池中的对象,而str2指向的是堆内存的String对象,==判断的是地址,肯定不等了。
System.out.println(str1 == str2);// false
/***
* Java中的比较有两种,是==和equals()方法,equals()是Object类的方法,定义在Object类中的equals()方法是如下实现的:
* public boolean equals(Object obj){ return (this==obj);}
*/
System.out.println(str1.equals(str2));// true String类的equals重写了Object类的equals()方法
System.out.println(str1 == str2.intern());//true intern()方法:返回字符串对象的规范化表示形式(存在返回String池中对象的引用)
System.out.println(str2 == str2.intern());//false (str指向的是对象)
System.out.println(str1.hashCode() == str2.hashCode());// true
String str3 = "abcabc";
String combo = str1 + str2;
System.out.println(str3 == combo);// false str3指向的是首地址
System.out.println(str3 == combo.intern());// true
int n = Integer.parseInt("10");//将字符串转换为int类型
String str4=Integer.toString(n);//将int转换为string
String str5 = String.valueOf(n);
System.out.println(n+str4+str5);
}
public void string3(){
StringBuilder bu1=new StringBuilder("Hello,");//StringBuilder动态字符串,单线程不安全,高效
bu1.append("World!");//追加字符串
System.out.println(bu1);
bu1.insert(2,"?");//插入字符串
System.out.println(bu1);
bu1.reverse();//字符串反转
System.out.println(bu1);
char bu2=bu1.charAt(0);//查找索引为0的字符串
System.out.println(bu2);
String str="WWW-CCC-NNN";
char[] str1=str.toCharArray();//字符串转换为字符串数组
StringBuilder sb=new StringBuilder();
sb.append(str1);//追加
sb.delete(8, 11);//删除
sb.insert(8, "高级工程师");//插入
sb.replace(4, 8, "JAVA");//替换
sb.reverse();//反转-倒序
String s1=sb.toString().toLowerCase();//StringBuilder转换为String
System.out.println(s1);
}
public void string4(){
StringBuffer sb=new StringBuffer("");//StringBuffer动态字符串,多线程安全,比String对象快,比StringBuilder慢
//应用SQL拼接追加
String user = "test";
String pwd = "123";
sb.append("select * from userInfo where username=");
sb.append(user);
sb.append(" and pwd=");
sb.append(pwd);
System.out.println(sb);
sb.delete(0,11);//删除
System.out.println(sb.capacity());//获取容量
sb.insert(12,"2");
sb.reverse();//反转-倒序
String str=sb.toString();//转换为字符串
System.out.println(str);
}
public static void main(String args[]) throws UnsupportedEncodingException {
string002 s = new string002();
s.string1();
s.string2();
s.string3();
s.string4();
}
}
JAVA-String,StringBuilder,StringBuffer例子(基础必备)的更多相关文章
- 【转载】关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题
REF: http://blog.csdn.net/fightforyourdream/article/details/15333405 题目是一道简单的小程序,像下面这样:[java] view p ...
- Java String StringBuilder StringBuffer
String是字符串常量 StringBuilder和StringBuffer都是字符串变量 速度方面:StringBuilder > StringBuffer > String 每当用S ...
- Java - String, Stringbuilder, StringBuffer比较
http://www.cnblogs.com/zuoxiaolong/p/lang1.html
- JAVA String、StringBuffer、StringBuilder类解读
JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...
- java中String StringBuilder StringBuffer比较和效率(性能)测试
string stringbuilder stringbuffer三者的区别 从JDK源码看,String.StringBuilder.StringBuffer都是存放在char[] 数组字符串. 简 ...
- 深入源码剖析String,StringBuilder,StringBuffer
[String,StringBuffer,StringBulider] 深入源码剖析String,StringBuilder,StringBuffer [作者:高瑞林] [博客地址]http://ww ...
- String, StringBuilder, StringBuffer问题
1. 区别 String为字符串常量,而StringBuilder和StringBuffer都是字符串变量,其中StringBuilder线程非安全,StringBuffer线程安全. 每次对 Str ...
- String StringBuilder StringBuffer区别
String StringBuilder StringBuffer String类是final类,不可以被继承,且它的成员方法也是final方法,当一个字符串对象进行操作操作时,任何的改变不会影响到这 ...
- difference among String,StringBuilder,StringBuffer
difference among String,StringBuilder,StringBuffer String常用构造函数 String(byte[] bytes) String(byte[] b ...
- JDK源码分析系列---String,StringBuilder,StringBuffer
JDK源码分析系列---String,StringBuilder,StringBuffer 1.String public final class String implements java.io. ...
随机推荐
- Vue 快速入门
Vue框架介绍 中文文档: https://cn.vuejs.org/v2/guide/ Vue是一个构建数据驱动的web界面的渐进式框架. 目标是通过尽可能简单的API实现响应式的数据绑定和组合的视 ...
- [CEOI2007] 树的匹配Treasury
类型:树形 DP 传送门:>Here< 题意:给一棵树,你可以匹配有边相连的两个点,问你这棵树的最大匹配是多少,并且计算出有多少种最大匹配. 解题思路 首先树形Dp是很明显的,$f[i][ ...
- 【XSY2469】graph 分治 并查集
题目大意 给你一张\(n\)个点\(m\)条边的无向图,问删去每个点后,原图是不是二分图. \(n,m\leq 100000\) 题解 一个图是二分图\(\Longleftrightarrow\)该图 ...
- Codeforces Round #471 (Div. 2) F. Heaps(dp)
题意 给定一棵以 \(1\) 号点为根的树.若满足以下条件,则认为节点 \(p\) 处有一个 \(k\) 叉高度为 \(m\) 的堆: 若 \(m = 1\) ,则 \(p\) 本身就是一个 \(k\ ...
- ftp:linux下利用shell脚本添加虚拟用户并赋予权限
首先ftp配置应为虚拟用户登录模式 用户密码文本目录为/etc/vsftpd/vftpuser,代码如下: #!/bin/bash # ];then username=$ password=$ hom ...
- JS分页条插件
目标 制作js分页导航jq插件,用于无刷新分页或者刷新分页 实现目标参考京东和天猫的分页条. 有四个固定按钮,前页码,后页码,首页,末页. 程序关键点在于计算中间页面的起止位置.逻辑是以当前页码为参照 ...
- HDU-6370 Werewolf(杭电多校6I)
一群人在玩狼人杀,村民只会说真话,狼人会说真话和假话,要你求出那些人一定是村民或者那些人一定是狼人.想到了并查集不会用... 1,如果全部人都是狼人,一定可以所以一定是村民的人一定是0. 2, 加入是 ...
- [ZJOI2007]仓库建设(斜率优化)
L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...
- #1014 : Trie树 HihoCoder(字典树)
描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...
- 20165223《Java程序设计》第九周Java学习总结
教材学习内容总结 第13章- URL类 InetAddress类 套接字 UDP数据报 广播数据报 Java远程调用(RMI) 教材学习中的问题和解决过程 1. URL类 URL类构造方法: 使用字符 ...