A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String

创建方法不同,存储方式不同

public class TestString {

    public static void main(String[] args) {
        //创建对象方法一,在常量池中,相同值的地址是相同的
        String s1 = "hello";
        String s4 = "hello";
        String s5 = "abc";

        //创建对象方法二,在堆里
        String s2 = new String();//创建一个空串
        String s3 = new String("hello");


        System.out.println(s1 == s3);

        System.out.println(s1 == s4);
    }

}



String类常用方法

//--------------------------------------------------------
        //String 不可变类
        String s = "hello";
        //连接字符串
        s.concat("tom");
        //s对应的对象不能改,还是hello
        System.out.println(s);

        //需要创建新的对象,引用指向新的对象
        s= s.concat("tom");
        System.out.println(s);

        //--------------------------------------------------------
        //字符串的长度也就是字符的个数,hellotom,
        System.out.println(s.length());
        //--------------------------------------------------------
        //两个字符串的值是否相等
        String str1 = "hello";
        String str2 = "hello";
        String str3 = new String("hello");

        System.out.println(str1.equals(str2));//true
        System.out.println(str1.equals(str3));//true
        //区分大小写
        System.out.println(str1.equals("Hello"));//false

        //--------------------------------------------------------
        //忽略大小写
        System.out.println(str1.equalsIgnoreCase("Hello"));//true
        //转为大写
        System.out.println("HELLo".toUpperCase());//HELLO
        //转为小写
        System.out.println("HELLo".toLowerCase());//hello

        //--------------------------------------------------------
        //索引从0开始
        String sg = "hellohello";
        //参数字符串在原字符串对象中第一次出现的位置索引
        System.out.println(sg.indexOf('e'));//1
        System.out.println(sg.indexOf("he"));//0
        //不存在返回-1
        System.out.println(sg.indexOf("abc"));//-1
        System.out.println(sg.lastIndexOf("he"));//5

        //--------------------------------------------------------

        String sg1 = "hellohello";
        //返回参数位置对应的字符char
        System.out.println(sg1.charAt(1));//e


        String sg2 = "helloabc";
        //取子串,从参数位置取到末尾
        System.out.println(sg2.substring(5));//abc

        //取子串,从第一个参数位置开始取到第二个参数的前一位【);
        System.out.println(sg2.substring(0,5));//hello

        //--------------------------------------------------------
        //去除首尾空格
        String sg3 = "        h     e   l     l     o       ";
        System.out.println(sg3.trim());//h     e   l     l     o


        //字符串替换(旧的字符串,新的字符串)
        String sg4 = "helloabc";
        System.out.println(sg4.replace("hello", "你好"));//你好abc
        //去掉字符串中所有的空格,用空串替换空格
        System.out.println(sg3.replace(" ", ""));//hello

        //--------------------------------------------------------
        //判断是不是java文件
        String  sg5 = "abc.java";
        //是否以指定字符串结尾
        System.out.println(sg5.endsWith("java"));//true
        //是否以指定字符串开头
        System.out.println(sg5.endsWith("abc"));//true

        //--------------------------------------------------------
        //比较字符串大小
        String sg6 = "hello";
        String sg7 = "abc";
        //比较对象在比较的参数之前,返回负数,之后返回正数,相等返回0
        System.out.println(sg6.compareTo(sg7));//7
        System.out.println("xxx".compareTo("aaa"));//23
        System.out.println("xxx".compareTo("xxx"));//0


        //--------------------------------------------------------
        //是否包含指定参数的字符串
        System.out.println("hello".contains("ello"));//true

        //把字符串转换成字符数组
        char [] c = "hello".toCharArray();
        System.out.println(Arrays.toString(c));//[h, e, l, l, o]

        //分割,用参数分隔成数组
        String  [] strs = "aa bb cc dd ee ff".split(" ");
        System.out.println(strs.length);
        //遍历输出验证
        for(String ss : strs){
            System.out.println(ss);
        }




    }

}
StringBuffer类的方法

可变类

在字符串的值频繁更改时,用StringBuffer可以提高效率

package day18;

import java.util.Scanner;

public class TestStringBuffer {

    public static void main(String[] args) {
        StringBuffer sf = new StringBuffer();//空串16个字符大小的缓冲区
        System.out.println(sf.capacity());
        //超16会扩容,大约成倍
        sf.append("hellllllllllllllllllllllllllllllllllllllllllllllo00000000000000000000000000000000000000000000000000000");
        System.out.println(sf.capacity());

        StringBuffer sf1 = new StringBuffer();//空串16个字符大小的缓冲区
        System.out.println(sf1.capacity());//16
        sf1.append("hell0");
        //缩小缓冲数组大小
        sf1.trimToSize();
        System.out.println(sf1.capacity());//5

        //可以自己设置缓冲数组容量的大小
        StringBuffer sf2 = new StringBuffer(100);//给出最大值容量
        System.out.println(sf2.capacity());//100

        //append方法
        StringBuffer sr = new StringBuffer("hello");//给出最大值容量
        sr.append("tom");
        System.out.println(sr);//hellotom
        char [] c ={'a','b','c'};
        //(字符数组,起始位置,几个字符)
        sr.append(c,1,2);
        System.out.println(sr);//hellotombc

        //-------------------------------------------
        //在指定的位置插入一个字符串
        sr.insert(5, "您好");
        System.out.println(sr);//hello您好tombc
        //修改某个位置的字符
        sr.setCharAt(5, '你');//
        System.out.println(sr);//hello你好tombc
        //删除指定位置的字符
        sr.deleteCharAt(5);
        System.out.println(sr);//hello好tombc
        //删除某一部分字符序列【起始位置,终止位置)
        sr.delete(6, 9);
        System.out.println(sr);//hello好bc
        //反转字符串
        sr.reverse();
        System.out.println(sr);//cb好olleh

        //转换为String类型
        String strr = sr.toString();

        //String 转为StringBuffer
        Scanner input = new Scanner(System.in);
        System.out.println("输入一行字符串");
        String str = input.next();
        StringBuffer sff = new StringBuffer(str);

    }


}



String ,StringBuffer,StringBuilder的区别:
  • String 不可变字符串类: 表示一个字符串,用String
    字符串的值频繁修改,用String效率低,需要不断创建新的对象,那就选择用StringBuffer,StringBuilder

  • StringBuffer,StringBuilder可变字符串,StringBuffer时安全的,速度慢;StringBuilder非安全,速度快


正则表达式

用某种模式去匹配指定字符串的一种方式

优点:
  • 简介的代码
  • 严谨地验证文本框的内容
符号
符号
描述

\D
row 1 col 2

\d
row 2 col 2

\W
row 2 col 2

\w
row 2 col 2

.
除了换行以外的任意字符
符号
描述

{n}
row 1 col 2

{n,m}
row 2 col 2

*
row 2 col 2

+
row 2 col 2

?
除了换行以外的任意字符
语法

定义正则表达式:Pattern.compile(regString)
表达式的模式
验证

package day18;


import java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;


/**正则表达式 */


public class Ex4 {


    public static void main(String[] args) {

        //1.设置正则表达式

//      Pattern p = Pattern.compile("[0-9]{6}");

//      Pattern p = Pattern.compile("\\d{6}");

//      //2.设置要验证的数据

//      Matcher m = p.matcher("123456");

//      //3.验证

//      System.out.println(m.matches());




        Pattern p = Pattern.compile("1\\d{10}");

        Scanner input = new Scanner(System.in);

        System.out.println("请输入十一位的电话号码");

        String tel = input.next();

        Matcher m = p.matcher(tel);

        System.out.println(m.matches());


        System.out.println("请输入密码:");

        String passwd = input.next();

        Pattern p1 = Pattern.compile("\\w{4,10}");

        Matcher m1 = p1.matcher(passwd);

        System.out.println(m1.matches());



        System.out.println("请输入用户名");

        String name = input.next();

        Pattern p2 = Pattern.compile("[a-zA-z][a-zA-Z0-9]{3,15}");

        Matcher m2 = p2.matcher(name);

        System.out.println(m2.matches());



    }


}

包装类拆箱,装箱

八种基本数据类型

byte Byte

char Character

int Integer

装箱:基本数据类型包装成对象;基本数据类型 -》类类型

拆箱:把对象中的值取出;类类型 -》基本类型

Date类
  • API
    文档中的大部分方法均已过时,不建议使用
  • 日期格式应该使用SimpleDateFormat类;
- 提取时间分量的方法应该使用Calendar类package day18;

import java.security.Timestamp;
import java.sql.Date;
import java.sql.Time;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class TestDate {

    public static void main(String[] args) {
        //-----------------------父类java.util--------------------------
        java.util.Date date = new java.util.Date();
        System.out.println(date);

        System.out.println(date.getTime());
//      System.out.println(System.currentTimeMillis());
        //记录当时的瞬间
        java.util.Date date1 = new java.util.Date(1526978531991L);
        System.out.println(date1);
        //------------------子类java.sql------------------------------
        Date d1 = new Date(date.getTime());
        //将日期转换为字符串
        String sd1 = d1.toString();
        System.out.println(d1);//2018-05-22
        System.out.println(sd1);//
        //将字符串转换为date类型
        d1 = Date.valueOf(sd1);

        Time t1 = new Time(date.getTime());
        System.out.println(t1);
//      Timestamp tp1 = new Timestamp(date.getTime());
//      System.out.println(tp1);

        //--------------------格式化--------------------------
        //数字
        //NumberFormat
        NumberFormat nf1 = NumberFormat.getInstance();//当前缺省的数字格式化方式进行格式化
        System.out.println(nf1.format(12.234455));

        nf1 = NumberFormat.getCurrencyInstance();//当前缺省的货币格式化方法
        System.out.println(nf1.format(24.45645));

        //子类DecimalFormat
        DecimalFormat df1 = new DecimalFormat("00.00");
        System.out.println(df1.format(4.45645));

        //日期格式化
        DateFormat f1 = DateFormat.getInstance();
        System.out.println(f1.format(date));
        DateFormat f2 = DateFormat.getDateInstance();//日期
        System.out.println(f2.format(date));

        f1 = DateFormat.getDateInstance(DateFormat.SHORT);//短日期形式
        System.out.println(f1.format(date));

        f1 = DateFormat.getDateInstance(DateFormat.MEDIUM);//中日期形式
        System.out.println(f1.format(date));

        f1 = DateFormat.getDateInstance(DateFormat.LONG);//长日期形式
        System.out.println(f1.format(date));


        f1 = DateFormat.getDateInstance(DateFormat.FULL);//完整日期形式
        System.out.println(f1.format(date));


        //时间实例
        f1 = DateFormat.getTimeInstance();
        System.out.println(f1.format(date));

        //日期时间实例
        f1= DateFormat.getDateTimeInstance();
        System.out.println(f1.format(date));

        f1= DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
        System.out.println(f1.format(date));
    }

}



7 个回复

正序浏览
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
优秀,奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马