Java学习(第五日)

字符串

String类  引用类型  默认值为null

String str = "abc你好";//声明字符串
字符串的拼接
//"+"在拼接字符串时优先级是一样的
System.out.println("123"+123+123);//123123123
System.out.println(123+123+"123");//246123

//字符串和所有类型拼接(+)后得到的都是字符串
str = "123"+"abc";//123abc
str = "123"+23;//12323
str = "123"+new Object();//"123"+这个对象的toString的结果
str = "123"+new int[]{1,2,3};//"123"+数组地址
String类型中的常用方法
equals  字符串比较
boolean bool = "123".equals("123");//true
bool = new String("123").equals(new String("123"));//true
valueOf  将传入的参数转成字符
String.valueOf();
indexOf  查找子串出现的位置(index)找不到返回-1
int index = "123456".indexOf("34");//2
index = "123123123".indexOf("4");//-1
lastIndexOf  查找子串最后出现的位置(index)找不到返回-1
int index = "123123123".lastIndexOf("1");//6
charAt  获取指定位置的字符
char item = "123a456".charAt(3);//'a'
substring  截取字符串
String str;
str = "123456".substring(1);//'23456'
str = "123456".substring(1,4);//'234'  包含开始下标,不包含结束下标
replace  替换
str = "12345634".replace("34","AAA");//"12AAA56AAA"
str = "12.31.23".replaceAll(".","A");//'.'此处代表任意字符,为正则表达式  "AAAAAAAA"

split  分割字符串
String[] strArr = "1231231231".split("1");
System.out.println(Arrays.toString(strArr));//[,23,23,23]在字符串头会变为",",字符串尾不会
 trim  去除前后空白位  空格  \n  \r  \t
String strC ="\n\r  \t   123   \n\r" ;
System.out.println(strC);
System.out.println("--------------------------------------------------");
System.out.println(strC.trim());"123"
toLowerCase  字母小写
strNull = "123ABCabc".toLowerCase();
System.out.println(strNull);//"123abcabc"
toUpperCase  字母大写
strNull = "123abc".toUpperCase();
System.out.println(strNull);//"123ABC"
isEmpty  判断是否是空串
bool = "123".isEmpty();//不是空串 返回false
startsWith判断是否以某个字符串开始
"123456".startsWith("123");//ture
endsWith判断是否以某个字符串结束
"123456".endsWith("65");//false
字符串常量池
public class EasyStringB {
    public static void main(String[] args) {
        //String 对象  定义后就不可改变(常量)  使用private final修饰value数组


        //字符串常量池  池  容器---->重用
        //字符串怎样加入到常量池中----使用量的方式声明的字符串就会加入到常量池
        String str = "abc";//加入到常量池
        Integer.valueOf("23");
        char[] arr = {'a', 'b', 'c'};
        str = new String(arr);


        //程序中第一次使用量的形式定义"123",会将这个字符串存入<字符串常量池>
        //之后再使用量的形式使用该对象,就执行使用常量池中的对象
        String strA = "123";
        String strB = "123";
        System.out.println(strA == strB);//true

        String strC = new String("123");
        String strD = new String("123");
        System.out.println(strA == strC);//false
        System.out.println(strC == strD);//false
        //常量编译优化
        String strE = "12"+"3";
        String strF = "1"+"2"+"3";
        String item = "12";//变量
        String strG = item+"3";
        String strGG = item+3;
        System.out.println((strG == strGG)+"---------------------");//false
        //str()+"3"
        String strH = "12"+3;
        System.out.println(strA == strE);//true
        System.out.println(strA == strF);//true
        System.out.println(strE == strF);//true
        System.out.println(strA == strG);//false
        System.out.println(strA == strH);//ture
        System.out.println(strG == strC);//false

        final String aa = "12";
        String strI = aa+"3";
        System.out.println(strA == strI);//ture
        final String bb = new String("12");
        String strJ = bb+"3";
        System.out.println(strA == strJ);//false

        //inter
        str.intern();
        //返回  str对象在字符串常量池中的副本对象
        //过程:检查str是否在字符串常量池中存在副本,如果不存在就复制一份存入到常量池中
             //然后返回常量池中的副本对象
             //如果已经存在副本对象,直接返回副本对象

        //所以  两个字符串  equals  为true
        //那么  两个字符串的inter方法==
        strA = new String("123123");
        strB = new String("123123");
        System.out.println(strA.equals(strB));//ture
        System.out.println(strA == strB);//false
        System.out.println(strA.intern() == strB.intern());//true

        //new String("abc") 创建了几个对象?  一个或两个(有副本一个,没副本两个)

    }
StringBuffer/StringBuilder
import java.util.Objects;

public class EasyStringbuilder {
    public static void main(String[] args) {
        //String字符串定义后就不可改变   存在常量池中

        String str="";
        for(int i=0;i<10;i++){
            str+=i;
        }//0 01 012 0123 01234 …… 0123456789

        //在拼接字符串时不要产生中间串  StringBuilder(效率高)  StringBuffer(线程安全)

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

        //调用append  往StringBuilder数组中追加字符
        //其中没有产生字符串对象
        System.out.println(strB.toString());
        //StringBuilder  默认容量是  16
        //StringBuilder  扩容
        //追加字符时容量不够就需要扩容(value)  默认  原来容量*2+2,如果还不够就等于需要的最小容量

        //数组复制
        //System.arraycopy(src,0,dest,0,23);将src数组里从索引为0的元素开始, 
        //复制到数组dest里的索引为0的位置, 复制的元素个数为23个. 


        Objects.isNull(null);//true
        Objects.equals(str,"123");//false

    }
}

Date  日期,时间

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.util.Date;

public class EasyDate {
    //long  1970-1-1 00:00:00  000
    //时间类型  Date
    public static void main(String[] args) {
        //获取当前时间  --执行时时间
        Date date = new Date(0);
        System.out.println(date);

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

        time=time+2*24*60*60*1000;
        date=new Date(time);
        System.out.println(date);

        date.getMonth();//月份  0~11
        //格式化时间显示
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        
        String sdfStr = sdf.format(date);
        System.out.println(sdfStr);

        LocalDateTime ldt = LocalDateTime.now();//本地时间

        ZonedDateTime zdt = ZonedDateTime.now();
        Object obj = zdt.getZone();//获取时区
        System.out.println(obj);

    }
}

Math

round  取整  四舍五入
//取整  四舍五入
ranNum = 12.5;
long num = Math.round(ranNum);//13 返回long
Math.round(12.33f);//12  返回int
ceil  向上取整
double ceilNum = Math.ceil(ranNum);
System.out.println(ceilNum);//13
floor  向下取整
double floorNum = Math.floor(ranNum);
System.out.println(floorNum);//12
random  随机数
真随机
//随机数
double ran = Math.random();//[0,1)  真正随机
//ran*50  0~50    [8~90)  (0~82)+8
double ranNum = ran*82+8;
假随机
//随机数对象
Random ranObj = new Random(12);//假随机
Random ranObjN = new Random(12);
int a = ranObj.nextInt();
int b = ranObjN.nextInt();//a==b
System.out.println(a+"=="+b);
a = ranObj.nextInt(200);
b = ranObjN.nextInt(200);
System.out.println(a+"=="+b);//a==b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值