Java学习笔记(Javase毕向东版视频)五 常用API对象一

常用API:字符串操作:String类,StringBuffer类,StringBulider类

字符串是最重要的数据类型之一,处理字符串也是一种语言的基本工作。

1、String类:

 1 public class StringDemo {
 2     public static void main(String[] args)
 3     {
 4         StringDemo1();
 5     }
 6     protected static void StringDemo1()
 7     {
 8         /*java中有两种创建String对象的方法:
 9          * 1、使用字面量,就是直接用"字符串"即可:!!!是在字符串常量池中,如果没有则创建;如果有则直接使用
10          * 2、使用new:和普通对象一样在对内存中创建,!!!是两个对象,先是参数字符串对象,然后是new的一个副本
11          */
12         String s="abc";
13         String s1="abc";
14         String s2=new String("abc");
15         /*由上面的创建过程可知:字面量相同,则创建的对象相同,而字面量和new方法创建的对象地址不同
16          * !!!但是String类中将equals进行重写,是比较字符串的内容而不是地址
17          */
18         System.out.println("s==s1是"+(s==s1));
19         System.out.println("s==s2是"+(s==s2));
20         System.out.println("s.equals(s2)是"+s.equals(s2));
21         /*字符串字面量是常量,所以不允许改变值,
22          * !!!下面的操作是重新赋值,同样会在字符串常量池中进行查找,如果没有则会重新创建并返回地址
23          */
24         s="def";
25         System.out.println(s);
26     }
27
28 }

String类简介

  1 public class StringFunction1 {
  2
  3     public static void main(String[] args)
  4     {
  5         StringConstructorDemo();
  6         StringFunctionGet();
  7         StringFunctionChance();
  8         StringFunctionJudge();
  9         StringFunctionCompare();
 10         StringFunctionOther();
 11     }
 12
 13     private static void StringConstructorDemo()
 14     {
 15         /*对于String类中的构造函数,常用的是将byte[]和char[]转换为String对象,并可以截取一段
 16          * 对于byte[]数组是使用ascii码表进行转换
 17          */
 18         byte[] arr={65,66,67,95};
 19         String s=new String(arr);
 20         System.out.println("s="+s);
 21         char[] arr1={‘a‘,‘s‘,‘d‘,‘f‘,‘g‘};
 22         String s1=new String(arr1,1,3);
 23         System.out.println("s1="+s1);
 24     }
 25
 26     public static void StringFunctionGet() {
 27         String s="asdfgasd";
 28         //获取长度
 29         int length=s.length();
 30         System.out.println("length="+length);
 31         //字符串和数组类似,可以看做是包含字符的数组,同样是从0角标开始
 32         //获取指定角标字符
 33         int num=4;
 34         char c=s.charAt(num);    //超出长度报StringIndexOutOfBoundsException
 35         System.out.println("第"+num+"位角标上的字符是"+c);
 36         //*获取指定字符(串)出现的角标,这是一系列方法,重要
 37         char c1=‘k‘;
 38         int i=s.indexOf(c1);    //如果没有改字符(串)则返回-1
 39         System.out.println("第一次出现"+c1+"的角标是"+i);
 40         //获取子串
 41         String substring=s.substring(2, 6);
 42         System.out.println("substring=\""+substring+"\"");
 43     }
 44     public static void StringFunctionChance()
 45     {
 46         //字符串的转换:就是将字符串格式转换为其他格式
 47
 48         //用切割的方式将字符串转换为字符串数组,!!!使用正则表达式规则,特殊字符需要进行转义
 49         String s="张三.李四.王武";
 50         String[] arr=s.split("\\.");
 51         for (int i = 0; i < arr.length; i++)
 52         {
 53             System.out.println(arr[i]);
 54         }
 55         //转换为char[]
 56         char[] c=s.toCharArray();
 57         for (int i = 0; i < c.length; i++)
 58         {
 59             System.out.println(c[i]);
 60         }
 61         //转换为byte[],可以指定字符串的编码格式,然后获取其字节值
 62         s="aB中";
 63         byte[] b=s.getBytes();
 64         for (int i = 0; i < b.length; i++)
 65         {
 66             System.out.println(b[i]);
 67         }
 68         //转换为大/小写格式
 69         System.out.println(s.toUpperCase());
 70         System.out.println(s.toLowerCase());
 71         //转换指定位置的内容:如果找到则替换,没有则不换.返回替换后字符串
 72         System.out.println(s.replace("中", "中国"));
 73         //去除两端空格
 74         System.out.println("-"+"    ab c  ".trim()+"-");
 75         //字符串连接,将字符串的+操作封装
 76         System.out.println("abc".concat("kk"));
 77         System.out.println("abc"+"kk");
 78     }
 79
 80     private static void StringFunctionJudge() {
 81         //String类的判断方法
 82         //判断两个字符串是否相等,使用equals(),重写了Object的该方法
 83         String s="abc";
 84         System.out.println(s+"==Abc是"+s.equals("Abc"));
 85         //判断两个字符串是否相等(忽略大小写)
 86         System.out.println("忽略大小写时,"+s+"==Abc是"+s.equalsIgnoreCase("Abc"));
 87                 //System.out.println(s.equals("Abc".toLowerCase()));
 88         s="ArrayDemo.java";
 89         //判断字符串中是否包含某子串
 90         System.out.println(s+"中包含\"demo\"是"+s.contains("Demo"));
 91                 //contains()其实就是将indexOf()方法返回-1的情况进行判断
 92         //判断字符串是否以某字串开始/结束
 93         System.out.println(s+"以\"Array\"开头是"+s.startsWith("Array"));
 94         System.out.println(s+"以\".java\"结尾是"+s.endsWith(".java"));
 95     }
 96
 97     private static void StringFunctionCompare() {
 98         //比较方法
 99         //按字典顺序 (应该是Unicode码表)比较两个字串,即按字符进行比较,大则返回>0数,小则返回<0数,相等返回0
100         System.out.println("你".compareTo("我"));
101         System.out.println("abc".compareToIgnoreCase("Abc"));
102     }
103
104     private static void StringFunctionOther() {
105         //这里是String类中的不常用方法
106         //intern():检测字符串常量池中是否有该字符串存在,有则直接返回引用;没有则先创建在返回引用
107         String s=new String("abc");                //栈中
108         String s2=s.intern();                    //常量池中
109         System.out.println("s==s2是"+(s==s2));    //false
110     }
111 }

String类常用方法示例

  1 public class StringTest {
  2     public static void main(String[] args){
  3         //1、字符串数组排序:和int[]排序相似,只是比较时使用的是方法而不是>或<
  4         String[] arr={"asd","wer","hehe","xfg","bcd","xgg"};
  5         StringArraySort(arr);
  6         printArray(arr);
  7         //2、检测子串在字符串中的出现次数:用indexOf()循环判断,注意该方法返回的是角标值
  8         String s="   aasnbafuhuus nbadiloveyouuelinbasod       ",sub="nba";
  9         int count=subStringCount(s,sub);
 10         System.out.println("count="+count);
 11         //3、寻找两字串中最大相同子串:就是判断大串中是否有小串,并将小串进行截取循环判断
 12         String s1="abweiloveyouefhur";
 13         String sameSubstring=sameSubstring(s,s1);
 14         System.out.println(s+"和"+s1+"的最大相同子串是:"+sameSubstring);
 15         //4、模拟trim()功能:获取第一个/最后一个非空格字符的角标进行截取
 16         System.out.println("-"+myTrim(s)+"-");
 17     }
 18     //1、
 19     public static void printArray(String[] arr){
 20         System.out.print("[");
 21         for(int i=0;i<arr.length;i++){
 22             if(i!=arr.length-1){
 23                 System.out.print(arr[i]+",");
 24             }else{
 25                 System.out.print(arr[i]);
 26             }
 27         }
 28         System.out.println("]");
 29     }
 30
 31     public static void StringArraySort(String[] arr) {
 32         for(int i=0;i<arr.length;i++){
 33             for(int j=0;j<arr.length-1;j++){
 34                 if(arr[j].compareTo(arr[j+1])<0){
 35                     swap(arr,j,j+1);
 36                 }
 37             }
 38         }
 39     }
 40     private static void swap(String[] arr,int a,int b){
 41         String temp=arr[a];
 42         arr[a]=arr[b];
 43         arr[b]=temp;
 44     }
 45
 46     //2、
 47     private static int subStringCount(String s,String sub) {
 48         int num=0;
 49         int slength=s.length(),sublength=sub.length();
 50         if(slength<sublength){
 51             return num;
 52         }
 53         if(s.contains(sub)){
 54             /*
 55             for (int i = 0; i <= slength-sublength;) {
 56                 i=s.indexOf(sub,i);
 57                 if(i!=-1){
 58                     num+=1;
 59                     i+=sublength;
 60                 }else{
 61                     break;
 62                 }
 63             }
 64             */
 65             int index=0;
 66             while((index=s.indexOf(sub))!=-1){
 67                 num+=1;
 68                 s=s.substring(index+sublength);
 69             }
 70             return num;
 71         }else{
 72             return num;
 73         }
 74     }
 75
 76     //3、
 77     public  static String sameSubstring(String s,String s1) {
 78         if(s.length()<s1.length()){
 79             swap(s,s1);
 80         }
 81         int s1length=s1.length();
 82         if(s.contains(s1)){
 83             return s1;
 84         }
 85         String substring="";
 86         for (int i = s1length; i>0; i--) {
 87             for (int j = 0; j < s1length-i+1; j++) {
 88                 substring=s1.substring(j, j+i);
 89                 if(s.contains(substring)){
 90                     return substring;
 91                 }
 92             }
 93         }
 94         return substring;
 95     }
 96     private static void swap(String a,String b){
 97         String Temp=a;
 98         a=b;
 99         b=Temp;
100     }
101
102     //4、
103     public static String myTrim(String str) {
104         int indexstart=0,indexend=str.length();
105         while(str.charAt(indexstart)==‘ ‘){
106             indexstart++;
107         }
108         if(indexstart!=indexend){
109             while(str.charAt(indexend-1)==‘ ‘){
110                 indexend--;
111             }
112         }
113         return str.substring(indexstart,indexend);
114     }
115
116 }

String类方法的简单应用

2、StringBuffer类:

public class StringBufferClass {
    public static void main(String[] args){
        StringBufferDemo();
        StringBufferCURDFunction();
        StringBufferOtherFunction();
        //下面是StringBuilder(也就是StringBuffer类的示例),注意看区别
        int[] arr={3,6,2,6,8,1};
        System.out.println(StringBufferTest1(arr));
        System.out.println(StringBufferTest2(arr));
    }

    private static void StringBufferDemo() {
        /*StringBuffer是一个容器,和数组不同的是
         * 1、长度可变(初始长度为16字符):其实是在创建一(多)个16长度的数组,在将字串值复制过来,然后装入新内容
         * 2、可以存储不同类型值(注意不是所有类型:例如不包括byte)
         * 3、最终会转换为字符串类型
         * !!!4、和String不同的是,该类可以修改字符串值而不创建新空间
         */
        StringBuffer sb=new StringBuffer();
        //创建StringBuffer对象时也可以指定长度,效率较高
        StringBuffer s1=new StringBuffer(40);
        StringBuffer s=sb.append(4);
        /* !!!注意:有些操作返回本类对象,其实就是操作后  容器中  字符串的地址,所以两者是相等的
         * 并且该对象还可以继续进行操作,就是链式操作
         */
        System.out.println("s==sb是"+(s==sb));
        sb.append(true).append("haha");
        System.out.println(sb);
    }

    private static void StringBufferCURDFunction() {
        StringBuffer sb=new StringBuffer("i");
        //C:create,增
            //append()是向后追加
        StringBuffer s=sb.append("you");
            //insert()是在指定位置插入
        s.insert(1, "hate");
        System.out.println(s);
        //D:delete,删。注意没有清空的方法,可以用删除方法代替。
            //delete()删除指定位置,包含头,不含尾
        s.delete(5,8);
            //deleteCharAt()删除一个字符
        s.deleteCharAt(0);
        System.out.println(s);
        //R:read,查。和String的方法类似,indexOf(),charAt(),lastIndexOf()等
        //U:update:改
            //replace()替换一段字符,包含头,不含尾
        s.replace(1,4,"ove");
            //setCharAt()替换一个字符,!!!注意该方法返回void
        s.setCharAt(0, ‘l‘);
        System.out.println(s);
    }

    private static void StringBufferOtherFunction() {
        StringBuffer s=new StringBuffer("test");
        //setLength():设置长度,长则补空字符,并修改长度属性;短则剪切,并修改长度属性。
        s.setLength(10);
        System.out.println(s);
        s.setLength(4);
        //reverse():反转字符串内容
        System.out.println(s.reverse());
    }

    /*下面两种方法看似类似,其实后者更好,
     * 因为使用+的字符串连接操作每次都会在字符串常量池中产生一个新字符串对象,浪费空间
     * 而后者是容器可修改
     */
    private static String StringBufferTest1(int[] arr) {
        String str="[";
        for (int i = 0; i < arr.length; i++) {
            if(i!=arr.length-1){
                str+=arr[i]+", ";
            }else{
                str+=arr[i]+"]";
            }
        }
        return str;
    }

    private static String StringBufferTest2(int[] arr) {
        StringBuilder sb=new StringBuilder("[");
        for (int i = 0; i < arr.length; i++) {
            if(i!=arr.length-1){
                sb.append(arr[i]+", ");
            }else{
                sb.append(arr[i]+"]");
            }
        }
        return sb.toString();
    }
}

StringBuffer类和StringBuilder类

3、StringBuilder类:

时间: 2024-10-03 14:14:40

Java学习笔记(Javase毕向东版视频)五 常用API对象一的相关文章

Java学习笔记(Javase毕向东版视频)七 常用API对象三

一.泛型:简单说就是对对象类型进行限定的技术 public class GenericDemo { public static void main(String[] args){ /*泛型作为1.5版之后的新技术,分两步使用 * 1.在类名之后用<类型参数>,这里就像函数中的普通参数一样命名即可 * 2.在生成对象和返回该对象参数时需要明确具体的类型,相当于传入实参 * 上面说的是泛型类,除此之外,泛型还可以用于类中方法和接口 */ GenericTest<Person> gt=n

Java学习笔记(Javase毕向东版视频)六 常用API对象二

1.基本数据类型对象包装类:见下图 1 public class Test { 2 public static void main(String[] args){ 3 Demo(); 4 toStringDemo(); 5 jdkDemo(); 6 } 7 8 private static void jdkDemo() { 9 //注意:在1.5之后的版本中可以使用下面的形式 简化书写 ,这是版本升级的一个方面 10 Integer i=3; //自动装箱,jdk是Integer i = Int

Java学习笔记(Javase毕向东版视频)八

IO流:就是input/output输入/输出流. 一.字节流操作文件的便捷类:FileWriter和FileReader 1 import java.io.FileWriter; 2 import java.io.IOException; 3 4 public class FileWriterDemo { 5 private static final String LINE_SEPARATOR=System.getProperty("line.separator"); 6 publi

Java学习笔记(Javase毕向东版视频)二.2

5.运算符:变量的意义就在于可以进行运算,运算需要用运算符来表示,分为以下几种 1 class test 2 { 3 public static void main(String[] args) 4 { 5 //赋值运算符 =(赋值) +=,-=,*=,/= 6 int a=1234,b; 7 8 /*算数运算符 +(加) -(减) *(乘) /(除) %(取余) ++(自增) --(自减) +(字符串连接) 9 *1.除法运算结果自动转换为int型. 10 *2.取余结果的正负取决于被除数 1

Java学习笔记(Javase毕向东版视频)三.2

5.继承 1 //Java中所有对象都显式/隐式的继承子Object类 2 class fu{ 3 fu(){ 4 System.out.println("fu..."+getNum()); 5 show(); 6 } 7 private int num=3; 8 public void setNum(int num){ 9 this.num=num; 10 } 11 public int getNum(){ 12 return num; 13 } 14 public void sho

Java学习笔记(Javase毕向东版视频)三

1.面向过程思想,强调的是过程(即动作,函数):面向对象思想,强调的是对象. 2.类与对象关系:类是对事物的描述(属性和行为-方法),对象是类的实例.对象通过new生成.属性也称成员变量;方法也称成员函数. 1 /*Java代码都是在类中的,以下是Java的两种不同类:区别在于是否有main方法. 2 * 有main函数的可以独立运行,且main函数是程序的入口 3 * 如果没有main函数,就像其他面向对象的语言一样,通过new一个实例来运行 4 */ 5 6 public class Obj

Java学习笔记(Javase毕向东版视频)十

网络编程: 一.osi和TCP协议对照: 二.通讯三要素: 三.InetAddress对象简述: 1 import java.net.InetAddress; 2 import java.net.UnknownHostException; 3 4 public class IpClassDemo 5 { 6 public static void main(String[] args) throws UnknownHostException{ 7 demo(); 8 } 9 10 public s

Java学习笔记(Javase毕向东版视频)九

GUI:图形用户界面,Java不常用于创建桌面应用,所以用的比较少 一.概述: 二.Frame演示: 三.事件监听机制 1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.TextField; 5 import java.awt.event.KeyAdapter; 6 import java.awt.event.KeyEvent; 7 import j

Java学习笔记(Javase毕向东版视频)四

1.简介.进程和线程:简单的说就是进程负责为程序开辟内存空间,线程负责具体的执行单元(执行路径). 一个进程中可以有多个执行路径,称为多线程.CPU一次只能执行一个进程,但是一个进程内部可以有多个线程在执行. 最早的多进程,多线程效果其实是CPU进行快速切换的效果,由于切换速率很快用户不能发现.现在可以使用多CPU来实现. 参考:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 2.线程状态图 3.线程的创建:进程