Java学习Day5

字符串

字符串的定义  String 引用类型  默认返回值为null

字符串的构造方法  String sc=””;   String sc = new String(“”);(引号之间的就是字符串的值)

声明字符串

String str = "hr";
        str=new String("hello");
        str =new String();
        char[] arr = {'a','b',97};
        str = new String(arr);//aba
        System.out.println(str);
        str = String.valueOf(99);
        System.out.println(str);

字符串的拼接使用加号(+),加号的优先级和在基本数据类型运算中优先级一样,字符串与其他类型进行拼接得到的结果类型是字符串。

字符串与对象进行拼接得到的是字符串与对象toString的结果进行拼接

        str = "123"+23;             //12323
        System.out.println(str);
        str = "123"+"ab";           //123ab
        System.out.println(str);
        str = "123"+new Object();   //"123"+这个对象的toString的结果  
                                      //123java.lang.Object@1b6d3586
        System.out.println(str);
        str = "123"+new int[]{1,3,5,3};//123[I@4554617c
        System.out.println(str);
        System.out.println(123+123+"123");//246123
        System.out.println(123+"123"+123);//123123123

字符串中的一些方法:

equals方法:通过equals对字符串进行比较,在String中,equals方法重写,比较的是字符串是否

相同

 boolean bool="123".equals("123");
        String c = new String("11111");
        String b = new String("11111");
        bool = c.equals(b);
        System.out.println(bool);//true

indexOf方法:查找子串在字符串中的位置,返回首次出现的下标。若找不到,则返回-1。

        int index = "123456".indexOf("34");
        System.out.println(index);//2
        index ="123556".indexOf("22");//-1
        System.out.println(index);
        index="111111341".indexOf("1");
        System.out.println(index);//0

charAt:获取指定下标位置的字符

        char item = "123456".charAt(4);
        System.out.println(item);//5

trim:去除前后空白符(\t,\n,\r),但是不能去除中间的的空白位

        str="\n\r\ta\t".trim();
        System.out.println(str);//a
        str = "\n\r   \t   12   3   \n\r";
        System.out.println(str);//  	   12   3

toUpperCase 将字符串中的小写字母转为大写   toLowerCase  将字符串中的大写字母转为小写

        str = "123abc".toUpperCase();//转大写
        System.out.println(str);//123ABC
        str = "1123ABCadR".toLowerCase();//转小写
        System.out.println(str);//1123abcadr

Substring  从字符串中截取一部分字符串,括号里的参数为开始(开始和结束)位置的下标,下标表示方法和数组一样从0开始。

        str="567466".substring(2);//从下标为2截到最后
        System.out.println(str);//7466
        str="567466".substring(2,5);//从下标为2到下标为5之前不包括下标为5
        System.out.println(str);//746

replace  方法替换

        str="1234568543".replace("34","AAA");//将字符串中所有的“34“替换为“AAA”
        System.out.println(str);
        str="12345.68543".replaceAll(".","AAA");//
        System.out.println(str);

split  方法分割字符串,从参数字符所在的位置进行分割,如果参数在首位,则会在左侧分出一个“,”。

        String[] strArr="1233241424".split("2");//[1, 33, 414, 4]
        System.out.println(Arrays.toString(strArr));
        strArr="1233241424".split("1");//[, 23324, 424]
        System.out.println(Arrays.toString(strArr));
        strArr="1233241424".split("4");//[12332, 1, 2]
        System.out.println(Arrays.toString(strArr));

length 方法获取字符串长度

        int l = "1234".length();
        for (int i=0;i<str.length();i++){}

isEmpty 是否为空串,传入字符串参数,如果是空串返回true,不是空串则返回flase

        "123".isEmpty();//是空串返回true,不是空串则返回flase
        if (!str.isEmpty()){
            //非空则执行
        }

startWith/endWith 方法是否以...开始/结束  

        "13456".startsWith("13"); //true
        "13456".endsWith("6"); //true

valuesOf将传入的参数转为字符串

        String.valueOf("1");//转化为字符串类型
        String.valueOf(new Object());
//        String.valueOf(null);

对于重载的两个test方法,Java 编译器在选择重载方法时会优先选择能够提供最具体匹配的方法。在这里,null 可以被视为 String 类型的 null,因为 String 是 Object 的子类。因此,null 更匹配于 String 类型的参数。

public class Main {
    public static void main(String[] args) {
        test(null);
    }
    public static void test(String str){}
    public static void test(Object obj){}
}

字符串常量池

程序中第一次使用量的形式定义“123”,会将字符串对象传入字符串常量池之后 如果再次使用量的形式使用该对象,就执行使用常量池的对象

        String strA = "123";
        String strB = "123";
        //同为常量池中的对象
        System.out.println(strA==strB);//true

如果是通过new构造出来的,则是一个新的对象 

        String str1= new String("123");
        String str2= new String("123");
        //new 得到的为新的
        System.out.println(str1==str2);//flase
        System.out.println(str1==strA);//flase

字符串比较中==的使用

        String b = "12"+"3";
        String c = "1"+"2"+"3";
        String item = "12";
        String d = item+"3";
        String dd =item+"3";
        System.out.println(d == dd);//false
        String e = "12"+3;
        final String aa = "12";
        String f = "aa"+3;
        System.out.println(strA==b);//true
        System.out.println(strA==c);//true
        System.out.println(c==b);//true
        System.out.println(strA==d);//false  item为变量
        System.out.println(strA==e);//true
        System.out.println(strA==f);//true
        String bb = new String("12");
        String h = "bb"+3;
        System.out.println(strA==h);//flase  bb为一个运行出来的结果,无法确定它的结果

intern
返回 str对象在字符串常量池中的副本对象,如果已有副本直接返回副本
过程 检查str是否存在字符串常量中存在副本,如果不存在就复制一份放入常量池,然后返回常量池中的副本对象
所以两个字符串 equals  为true那么 两个字符串的intern方法 ==

        str.intern();
        str1= new String("123456");
        str2= new String("123456");
        System.out.println(str1.equals(str2));//true
        System.out.println(str1==str2);//false
        System.out.println(str1.intern()==str2.intern());//true

new String("abc");//创建了一个或两个对象

new String("abc");//创建了一个或两个对象

当字符串常量池中已经存在 "abc" 时,创建一个对象在堆内存中。

当字符串常量池中不存在 "abc" 时,创建一个对象在堆内存中,并在字符串常量池中创建另一个对象。

StringBuffer/StringBuilder 作为容器 避免字符串在拼接过程中产生中间件

调用append  往StringBuilder数组中追加字符

        StringBuilder strB=new StringBuilder();
        strB.append("123");
        strB.append("abc");
        strB.append("456");

其中前者StringBuffer是线程安全的,后者StringBuilder是线程不安全的

容量的扩容: 默认容量是16 可以传入参数设定初始容量  

一次扩容后容量=原容量*2+2

System.arrayCopy();()内有五个参数

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

src: 源数组对象,即要复制数据的数组。Object 类型

srcPos: 源数组中的起始位置,从该位置开始复制数据。整数类型

dest: 目标数组对象,即将数据复制到的数组。Object 类型

destPos: 目标数组中的起始位置,从该位置开始将数据复制过去。整数类型

length: 要复制的数组元素数量。整数类型

Date

时间是Date类型,long

与时间有关的方法

getTime:获取当前时间

        Date date=new Date();
        System.out.println(date);
        long time = date.getTime();
        System.out.println(time);

SimpleDateFormat:标准化时间

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        System.out.println(sdf);
        String sdfStr=sdf.format(date);
        System.out.println(sdfStr);

随机数

随机数方法Math.random

        double ran = Math.random();//[0,1)之间的随机数
        double ran1 = ran*82+8;//[8,90)之间的随机数

随机数类

Random ran=new Random();()内传入随机数种子

        Random randomObj=new Random(12);
        Random randomObj1=new Random(12);
        int aa=randomObj1.nextInt();
        int bb=randomObj.nextInt();
        aa=randomObj.nextInt(12);
        bb=randomObj.nextInt(12);

小数取整的三种方法:

//四舍五入  round方法

        long a = Math.round(ran1);
        System.out.println(a);
        Math.round(12.33f);//float返回int类型,double返回long类型

//向上取整    ceil方法

        double ceilnum=Math.ceil(ran1);
        System.out.println(ceilnum);
        

//向下取整  floor方法

        double floornum=Math.floor(ran1);
        System.out.println(floornum);

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值