首页 > 其他分享 >7-18学习笔记

7-18学习笔记

时间:2024-07-18 20:55:33浏览次数:12  
标签:String 18 System 笔记 学习 123 str println out

一、字符串

        String  类  引用类型  默认值 null  不是""

1、声明字符串

        String str="abc你好";
        str=new String();
        str=new String("你好");
        char[] arr={'a','b','c',97};
        str=new String(arr);
        System.out.println(str);
        str=String.valueOf(12);
        System.out.println(str);

2、字符串的拼接  +

        加号在拼接字符串和数字运算时优先级是一样的
        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[I@4554617c即"123"+第一个元素的地址
        System.out.println(str);

 3、字符串的比较

        使用equals方法比较字符串
        boolean bool="123".equals("123");//true
        String strA=new String("123");
        String strB=new String("123");
        bool=strA.equals(strB);//true
        System.out.println(bool);

4、String类型中的常用方法

(1)将常用的参数转成字符串 valueOf方法
        String.valueOf('1');
        String.valueOf(new Object());
        String.valueOf("");
        //String.valueOf(null);

具体调用哪个重载方法  有就近原则  尽量具体

        test(null);//就近原则 尽量具体



    public static void test(String str){
        System.out.println("String");
    }
    public static void test(Object obj){
        System.out.println("Object");
    }

(2) 查找子串出现的位置(index) indexOf方法
        找不到返回-1
        int index="123456".indexOf("3457");
        System.out.println(index);//-1
        index="123123123".indexOf("1");//0
        index="123123123".lastIndexOf("1");//6
 (3)获取指定位置的字符  charAt方法
        char item="123456".charAt(4);//'5'
        System.out.println(item);
        //item="123456".charAt(8);//报错StringIndexOutOfBoundsException
 (4)截取字符串  substring方法
         str="123456".substring(1);//"23456"
        System.out.println(str);
        //包含开始下标,不包含结束下标
        str="123455".substring(1,5);//"2345" 有头无尾
(5)替换  replace、replaceAll方法
str="12345634".replace("34","AAA");//"12AAA56AAA"
System.out.println(str);
str="12.31.23".replaceAll(".","A");//"AAAAAAAA" 此处’.‘代表任意字符 根据正则表达式进行替换
System.out.println(str);
(6)分割字符串  split方法
        String[] strArr="123123123".split("2");//1,31,31,3
        System.out.println(Arrays.toString(strArr));
        strArr="123123123".split("1");//, 23, 23, 23
        System.out.println(Arrays.toString(strArr));
        strArr="1231231231".split("1");//, 23, 23, 23
        System.out.println(Arrays.toString(strArr));
(7)字符串长度 length方法
        int l="123123".length();
        for (int i = 0; i < str.length(); i++) {}
(8)去除前后空白位 trim方法 空格 \n \t \r
        String strC="\n\r  \t  123  \n\r";
        System.out.println(strC);
        System.out.println("-----------------");
        System.out.println(strC.trim());

 (9)大写 小写 (针对字母)
        str="123abc".toUpperCase();//转成大写
        System.out.println(str);
        str="123ABCabc".toUpperCase();//转成小写
        System.out.println(str);
(10)判断是否是空串 
        bool="123".isEmpty();//是空串 返回true
        System.out.println(bool);
        if(!str.isEmpty()){
            //str中有内容就要执行此代码
        }
(11)是否以“”开始 是否以“”结束
        "123456".startsWith("123");//true
        "123456".endsWith("65");//false

5、字符串常量池    池  容器  重用

        String  对象  定义后就不可改变  常量  private final修饰value数组
        字符串怎样加入到常量池中--- 使用量的方式声明的字符串就会加入到常量池中
        int a=12;//入常量池
        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";//解析时已化为"123"
        String strF="1"+"2"+"3";//"123"

        String item="12";
        String strG=item+"3";
        String strGG=item+3;
        System.out.println((strG==strGG)+"---------------");//false
        //str()+"3"
        String strH="12"+3;//"123"
        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);//true
        System.out.println(strG==strC);//false

        final String aa="12";
        String strI=aa+"3";
        System.out.println(strA==strI);//true

        String bb=new String("12");//用了构造方法 只有在运行后才能知道bb是什么
        String strJ=bb+"3";
        System.out.println(strA==strJ);//false
        String strK=aa+"3";
        System.out.println(strA==strK);//true

6、intern方法

        str.intern();
        返回 str对象在字符串常量池中的副本对象
        过程:检查str是否在字符串常量池中存在副本,如果不存在就复制一份存入到常量池中
            然后返回常量池中的副本对象
            如果已经存在副本对象,直接返回副本对象
        若有  两个字符串  equals  为true
        那么 两个字符串的intern方法==
        strA=new String("123123");
        strB=new String("123123");
        System.out.println(strA.equals(strB));//true
        System.out.println(strA==strB);//false
        System.out.println(strA.intern()==strB.intern());//true
        new String("abc"+”12“) 创建了几个对象  1个或2个

二、StringBuilder StringBuffer

        String  字符串定义后不可改变  存在常量池中
        String str="";
        for (int i = 0; i < 10; i++) {
            str=str+i;
        }
        //0 01 012 0123 01234  ......  0123456789
        为了在拼接字符串的时候不要产生中间串 减少字符串常量池的使用 可使用StringBuilder StringBuffer两个类
        调用append  往StringBuilder数组中追加字符
        其中没有产生字符串对象
        StringBuilder strB=new StringBuilder();
        strB.append("123");
        strB.append("abc");
        strB.append("456");
        
        System.out.println(strB);
StringBuilder默认容量是 16
StringBuilder 扩容
追加字符时容量不够就需要扩容(value)  默认  原来容量*2+2  若不够则要多少扩到多少
StringBuilder线程不安全
StringBuffer  线程安全的 其余与StringBuilder一样
 数组复制  System.arraycopy(原数组,复制开始位置,目标数组,粘贴开始位置,复制字符长度);

 Objects类

        Objects.isNull(null);//true  判断对象是否为null
        Objects.equals(strB,null);// 判断这两个对象是否相等 内容是否相同

 三、时间类型 Date

        用long来存储时间  1970-1-1 00:00:00 000开始累加 每1ms加1

1、获取当前时间  执行时的时间

        Date date=new Date();
        System.out.println(date);
        long time=date.getTime();//时间戳
        System.out.println(time);

        date.getMonth();//0-11之间

 2、时间格式化

  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");//hh为12小时制
  String sdfStr=sdf.format(date);
  System.out.println(sdfStr);

 3、 2个日期类

        //LocalDate 本地日期  LocalDateTime 本地时间  不计时区
        LocalDateTime ldt=LocalDateTime.now();
        //记时区
        ZonedDateTime zdt=ZonedDateTime.now();
        Object obj=zdt.getZone();
        System.out.println(obj);

 四、随机数

1、Math.random()   真随机

        double ran=Math.random();//[0,1)随机数
        // ran*50  [8,90)即 (0-82)+8
        double ranNum=ran*82+8;

2、Random类   伪随机

        根据随机种子生成随机数,默认执行时的时间戳为随机种子  种子一样 随机数生成顺序一样
        Random ranObj=new Random(12);
        Random ranObjN=new Random(12);
        int a=ranObj.nextInt();
        int b=ranObjN.nextInt();
        System.out.println(a+"==============="+b);
        b=ranObjN.nextInt(200);
        a=ranObj.nextInt(200);
        System.out.println(a+"==============="+b);

五、取整

        ranNum=12.5;
        //四舍五入
        long num=Math.round(ranNum);//13
        int intNum=Math.round(12.33f);
        //向上取整
        double ceilNum=Math.ceil(ranNum);//13.0
        //向下取整
        double floorNum=Math.floor(ranNum);//12.0
       四舍五入时 遇小数为0.5的往上取 
        num=Math.round(0.5);// 1
        num=Math.round(-0.5);// 0  
        num=Math.round(-0.4);// 0
        num=Math.round(-0.6);// -1

标签:String,18,System,笔记,学习,123,str,println,out
From: https://blog.csdn.net/L14173233/article/details/140513474

相关文章

  • 0718
    #HTMLHyperTextMarkingLanguage数据呈现、标签(元素、节点、DOM对象)固定、所有标签都是可选的eXtensibleMarkingLanguage数据结构(配置文件),标签不固定(全部都是自定义的),标签都要有开和关,只能有一个根元素,有约束条件来确定那些元素和顺序##开发工具VisualStudioCo......
  • Vue3学习---1
    Vue3学习1.初识Vue1.1HelloWorld程序<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><ti......
  • XGBoost模型构建+SHAP解析-Python代码——用XGBoost模型实现机器学习并进行黑箱过程解
    一、XGBoost模型简介1.1适用范围XGBoost(ExtremeGradientBoosting)是一个基于梯度提升(GradientBoosting)框架的增强算法,广泛应用于分类、回归、排序等任务。常见的应用包括:信用风险评估销售预测病毒检测图像识别1.2原理XGBoost是梯度提升树(GradientBoostedDecisionTree......
  • C语言指针笔记
    该笔记整理自阮一峰老师的《C语言教程》和部分网上资料什么是指针指针就是一个代表某个内存地址的值声明和初始化指针变量inta=10;//声明一个指针变量p,并将a的地址赋给pint*p=&a;//输出p的值(地址值)printf("%p",p);//输出p所指向的值printf("%d",*p);这......
  • 决策树模型构建+调参Python代码——用决策树模型实现机器学习
    一、决策树模型简介1.1适用范围决策树模型(DecisionTree)可以用于分类和回归任务,广泛应用于以下领域:客户细分信用风险评估医疗诊断营销策略优化1.2原理决策树是一种树形结构的预测模型,通过一系列的特征测试(即节点的分裂)将数据集逐步划分,从而形成一个树状的决策路径。每个节......
  • 蓝桥杯单片学习总结(Day12 串口通讯实验)
    实验现象:        通过串口调试助手发送数字1~8,板子上面的对应指示灯亮。注意此处发送应选择文本模式发送。 实例代码:#include<STC15F2K60S2.H>#defineBUAD 9600//所需波特率、#defineSYSTEMCLOCK 11059200L//系统时钟频率,L表示该数据为长整型voiduart_......
  • 嵌入式学习——C语言字符数组及其函数
    目录一、字符数组    1、定义    2、初始化                    3、引用字符数组元素二、字符串和字符串结束的标志三、字符数组的输入输出        1、字符串的输入:scanf    2、注意事项四、字符串处理函数......
  • 2024夏令营提高1模考0718模拟赛(提高1)补题报告
    2024夏令营提高1模考0718模拟赛(提高1)补题报告$$0718模拟赛(提高1)\\补题报告\2024年7月18日\by\\\唐一潇$$一、做题情况第一题比赛$100/100$,赛后通过第二题比赛$0/100$,赛后通过第三题比赛$0/100$,赛后通过第四题比赛$0/100$,赛后通过比......
  • Python学习之推导式
    目录一、列表推导式二、集合推导式三、字典推导式四、元组推导式一、列表推导式[expressionforiteminiterableifcondition]介绍:(1)expression:生成元素的表达式。(2)item:可迭代对象中的每个元素。(3)iterable:可迭代对象,如列表、元组、字符串等。(4)condition(可选):筛选......
  • 扩展 KMP/exKMP(Z 函数)学习笔记
    声明本文章转载自shangruolin的博客,已经过作者(存疑)同意,帮TA宣传一下。扩展KMP/exKMP(Z函数)学习笔记兼P10479匹配统计题解。LCP:最长公共前缀。Z函数,又称扩展KMP(exKMP),能够在\(O(n)\)的时间内求出一个字符串与其所有后缀的LCP的长度。定义\(z_i\)为字符串\(s\)......