zoukankan      html  css  js  c++  java
  • 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();
    	}
    }
    

  • 相关阅读:
    HTTP协议
    MySQL建立主-从服务器双机热备配置
    centOS7安装配置mysql5.7.21
    修改docker镜像的默认存储目录
    docker--学习笔记
    MySQL数据库操作
    zabbix注意事项和常用命令
    CnentOS6.5安装zabbix2.2
    如何查询一个进程下面的线程数(进程和线程区别)
    OSPF与ACL实例
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7684622.html
Copyright © 2011-2022 走看看