常用类

  • String

    • String表示字符串类型,属于引用数据类型,不属于基本数据类型
    • 在Java中随便使用双引号括起来的都是String对象,例如“abc”、“def”,“hello world!”,这是三个String对象
    • Java中规定,双引号括起来的字符串,是不可变的,也就是说“abc”,从出生到最终死亡,都是可不变的
    • 在JDK中双引号括起来的字符串,”abc“、”def“都是存储在字符串常量池中,因为字符串在实际的开发中使用太频繁了,放在常量池中,可以提高效率

      s1创建了1个对象,s2创建了2个对象,s3创建了1个对象

    • 比较字符串时,用==不保险,应该用equals ,因为String已经重写了equal

    • 关于String类的几个常用构造方法
      • 第一个:String s=new String(" ");
      • 第二个:String s=" ";最常用
      • 第三个:String s=new String(char数组);
      • 第四个:String s=new String(char数组,起始下标,长度);
      • 第五个:String s=new String(byte数组);
      • 第六个:String s=new String(byte数组,起始下标,长度);
    • String类的charAt方法
      • charAt(int index) 返回指定索引处的字符
    • String类的compareTo方法
      • 字符串大小的比较不能使用>、<,必须使用compareTo方法
    • String类的contains方法
      • 用于判断字符串是否包含了某个子字符串
    • String类的endsWith方法
      • 判断当前字符串是否以某个字符串结尾
    • String类的startsWith方法
      • 判断当前字符串是否以某个字符串开始
    • String类的equals方法
      • 用于判断两个字符串是否相等,不能使用双等号
    • String类的equalsIgnoreCase方法
      • 判断两个字符串是否相等,忽略大小写
    • String类的getBytes方法
      • 将字符串转换成byte数组
    • String类的indexOf方法
      • 判断指定子字符串在当前字符串中第一次出现处的索引
    • String类的isEmpty方法
      • 判断字符串是否为空:”“.isEmpty();—— true        " ".isEmpty();—— false
      • 判断数组长度是length属性,判断字符串长度是length()方法
    • String类的lastIndexOf方法
      • 判断指定字符串在当前字符串最后一次出现的索引
    • String 类的replace(char oldChar,char newChar)
      • 通过新字符,替换旧的字符
    • String 类的replace(CharSequence target,CharSequence replacement)
      • 通过新字符串,替换旧的字符串
    • String类的split方法
      • 用于切割字符串,返回字符串数组类型
    • String类的substring方法

      • 截取字符串
      • “”.subString(7);  substring(7,10)7包含,但10不包含
    • char[]    toCharArray()
      • 将字符串转换成char数组
    • String类的toLowerCase(toUpperCase)方法
      • 将字符串数组转化成小写(大写)
    • String类的trim方法
      • 去除字符串前后空白
    • String类只有一个方法是静态的,不需要new对象,这个方法叫valueOf
      • 将非字符串,转换成字符串
      • printIn方法会将值通过valueOf方法转换为字符串类型的,然后调用字符串重写的toString方法进行输出
  • StringBuffer

    • 因为java的字符串是不可变的,每一次拼接都会产生新的字符串,这样会占用大量的 方法区内存,造成内存空间的浪费,“abc”,“bc”,“abcbc”就创建了3个字符串对象
    • 所以以后需要进行大量的字符串拼接操作,建议使用JDK自带的
      • java.lang.StringBuffer
      • java.lang.StringBuilder
      • StringBuffer中的方法都有:synchronized关键字修饰,表示StringBuffer在多线程环境下运行时时安全的
      • StringBuilder中的方法没有:synchronized关键字修饰,表示StringBuilder在多线程环境下运行时时不安全的
    • String是不可变的,StringBuffer和StringBuilder是可变的,因为虽然底层都是一个byte类型的数组,但是String用final关键字修饰了,所以指向一个数组之后就不能再指向别的数组了,并且StringBuffer/StringBuilder的初始化容量是16,当存满之后会自动扩容,底层调用了数组拷贝的方法,适合字符串的频繁拼接操作
  • 基础类型对应的8个包装类
    • 可能有这种需求,调用一个方法需要传递一个数字进去,但是参数是Object类型,但数字属于基本数据类型,这时候就可以传一个包装类进去
    • Java中为8种基本数据类型又准备了8种包装类型,8种包装类属于引用数据类型,父类是Object
    • 基本数据类型:byte、short、int、long、float、double、char
    • 包装类型:java.lang.Byte(父类Number)、java.lang.Short(父类Number)、java.lang.Interger(父类Number)、java.lang.Long(父类Number)、java.lang.Float(父类Number)、java.lang.Double(父类Number)、java.lang.Boolean(父类Object)、java.lang.Character(父类Object)
    • 八种包装类中,其中有六个都是数字对应的包装类,他们的父类都是Number,Number是一个抽象类,无法实例化对象
    • 装箱:将基本数据类型转化成引用数据类型     拆箱:将引用数据类型转化成基本数据类型
    • Number类中有这样的方法:
      • byte byteValue()
      • 作为一个 byte返回指定数字的值,这可能涉及舍入或截断。  
      • abstract double doubleValue()
      • 作为一个 double返回指定数字的值,这可能涉及舍入。
      • abstract  float     floatValue()
      • 作为一个 float返回指定数字的值,这可能涉及舍入。 
      • abstract   int        intValue()
      • 作为一个 int返回指定数字的值,这可能涉及舍入或截断。 
      • abstract    long    longValue()
      • 作为一个 long返回指定数字的值,这可能涉及舍入或截断。  
      • short     shortValue()
      • 作为一个 short返回指定数字的值,这可能涉及舍入或截断。  
      • Integer类型的包装类的构造方法有两个
        • Interger(int)
        • Interger(String)
        • 其余六种数字类型的包装类都类似
    • 通过访问包装类来获取最大值和最小值(除了Boolean类型)
      • Integer.MAX_VALUE——获取int的最大值
      • Integer.MIN_VALUE——获取int类型的最小值
    • JDK1.5之后支持自动装箱和自动拆箱
    • Integer x=100;//自动装箱(Integer x=new Integer(100);)
    • int y=x;//自动拆箱int y=x.IntValue(x);
      Integer z=1000;
      System.out.println(z+1);//发送了自动拆箱
      结果1001

      自动拆箱的好处就是,方便编程

    • Integer integer=1000;
      Integer integer2=1000;
      System.out.println(integer==integer2);
      结果false

      integer和integer2还是引用数据类型,只有发生+-*/等运算时才会发生自动拆箱

    • java中为了提高程序的执行效率,将[-128,127]之间的所有包装对象提前创建好,放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间 的数据不需要再new了,直接从整数型常量池当中取出,双等号对于引用数据类型永远比较的都是地址,其实常量池就是方法区开辟的一片缓存,优点是:效率高,缺点是:耗费内存
      Integer s1=128;
      Integer s2=128;
      System.out.println(s1==s2);//false
      Integer s3=127;
      Integer s4=127;
      System.out.println(s3==s4);//true

      缓存机制要重视,大型项目中的重要优化手段就是:catch缓存机制

    • Integer类静态方法parseInt(String)
      • int retValue=Integer.parseInt("123");将字符串转换成int类型的变量
      • 传入的字符串必须是数字类型的,否则发生NumberFormatException运行时异常
      • 除了Character类型都有该方法
  • 日期相关类

    • java.util.Data
    • Date nowTime=new Date();//获取系统当前时间,精确到毫秒,直接调用无参构造方法就行,toString方法被重写
    • simpleDateFormat类是java.text包下的,专门负责日期格式化的
      • yyyy 年(年是四位)
      • MM月  (月是两位)
      • dd 日
      • HH时
      • mm分
      • ss秒
      • SSS 毫秒(毫秒3位,最高999,1000毫秒代表1秒)
    • Date date=new Date();
      //日期进行格式化
      //simpleDateFormat类是java.text包下的,专门负责日期格式化的
      SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss SSS");
      String string=simpleDateFormat.format(date);
      System.out.println(string);

      2022-10-28 19:29:35 922

      String time="2022-10-28 17:43:31 696";
      Date date2=simpleDateFormat.parse(time);
      System.out.println(time);

      2022-10-28 17:43:31 696

      注意:字符串的日期格式要和SimpleDateFormat指定的日期格式要一样,不然会出现异常java.text.ParseException

    • System.currentTimeMillis() 返回的是自1970年1月1日,到系统当前时间的总毫秒数
  • 总结目前所学习的System类的方法、
    • System.out out是System的成员变量,返回一个PrintStream类型的变量,然后调用该类的println方法
    • System.exit(int)  终止Java虚拟机的运行
    • System.currentTimeMillis(),返回的是自1970年1月1日,到系统当前时间的总毫秒数
    • System.arrayCopy(),System.arraycopy(src, srcPos, dest, destPos, length);进行数组的赋值
    • System.gc(),用来对堆中的垃圾进行回收
  • 数字格式化
    • java.text.DecimalFormat专门负责数字格式化的
    • 数字的格式:#代表任意数字   ,代表千分位,.代表小数点,0代表不够时补零
  • 处理高精度
    • java.math.BigDecimal精度极高,专门用在财务软件中,double的精度还是不够
  • Random
Random random=new Random();
int num=random.nextInt();
System.out.println(num);
    • random.nextInt(101),表示可以取到0-101之间的随机正整数,但不包括101
  • Enum
    • 枚举:一枚一枚可以列举出来的,才建议使用枚举类型
    • 枚举编译之后也是生成class文件
    • 枚举也是一种引用数据类型
    • 枚举中的值可以看作是常量
    • 结果只有两种情况,建议使用boolean类型,结果超过两种并且还是一枚一枚可以列举出来的,建议使用枚举
    • public enum enum2 {
      SPRING,SUMMER,AUTUMN,WINTER
      }
      switch (enum2.WINTER) {
      case SPRING:
      System.out.println("春天");
      break;
      case SUMMER:
      System.out.println("春天");
      break;
      case AUTUMN:
      System.out.println("春天");
      break;
      case WINTER:
      System.out.println("春天");
      break;
      }

      String支持String、int,也支持枚举,低版本的JDK只支持String、int,高版本的JDK还支持枚举,byte、short、char也可以,因为支持自动类型转换

 

动力节点—day06的更多相关文章

  1. 分布式技术EJB3_分库架构 - 【动力节点官网】北京Java …

    分布式技术EJB3_分库架构 - [动力节点官网]北京Java … http://www.bjpowernode.com/xiazai/2220.html <程序天下--EJB JPA数据库持久 ...

  2. 001_动力节点_SpringMVC4_SpringMVC简介

    1.视频的下载地址是 下载地址:百度云盘 链接:http://pan.baidu.com/s/1ge58XW3 密码:yd5jhttp://www.java1234.com/a/javaziliao/ ...

  3. 动力节点Java培训告诉你Java线程的多功能用法

    现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...

  4. [Java语言] 《struts2和spring MVC》的区别_动力节点

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  5. 动力节点 mysql 郭鑫 34道经典的面试题三

    1.第十五题 15.列出受雇日期早于其直接上级的所有员工编号.姓名.部门名称 思路一:第一步将emp a看成员工表,将emp b 看成领导表,员工表的mgr字段应该等于领导表的主键字段 mysql&g ...

  6. 动力节点 mysql 郭鑫 34道经典的面试题二

    13.有3个表S(学生表),C(课程表),SC(学生选课表) S(SNO,SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO,CNO,SC ...

  7. 动力节点 mysql 郭鑫 34道经典的面试题

    DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `DEPTNO` int(2) NOT NULL COMMENT '部门编号', `DNAME` ...

  8. Java学习day06

    [方法]   [可以在不是main的方法中调用其他方法] [方法调用时的参数问题] [方法调用]    [上面定义了两个class,实际上不推荐] [递归调用]    [方法的返回值]   [retu ...

  9. Java Web 学习路线

    实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...

  10. Java编程中的美好

    java程序员如何写出"优美"代码,动力节点告诉你怎么办: 1.注释尽可能全面 对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述:类的注释应该包含类的功能说 ...

随机推荐

  1. 从0搭建vue3组件库:自动化发布、管理版本号、生成 changelog、tag

    今天看到一篇文章中提到了一个好用的工具release-it.刚好可以用在我正在开发的vue3组件库.纸上得来终觉浅,绝知此事要躬行,说干就干,下面就介绍如何将release-it应用到实际项目中,让组 ...

  2. 在Rocky8中安装VMware Workstation 的方法

    在Rocky8中安装VMware Workstation 的方法 1.Rocky必须是图形界面 2.下载wmware workstation(下载地址:https://www.vmware.com/i ...

  3. OpenCvSharp的安装和使用

    OpencvSharp是opencv的C#版本,使用习惯了opencv的人学起OpenCvSharp会很容易上手,看了网上很多的安装方式,最后我感觉还是自己去下载安装包的方式最简单,通过Nuget的方 ...

  4. Windows Server 2019 安装 Oracle 19C RAC(VMWare虚拟机环境)

    软件 Windows Server 2019 Standard Oracle 19C Oracle Grid 19 VMware Workstation 16 规划 共享存储,使用Windows Se ...

  5. Pycharm下载与使用及python的基础数据类型

    1.Pycharm编辑器 1.1.下载地址 https://www.jetbrains.com/pycharm/ 1.2.Pycharm编辑器下载 1.根据自己的操作系统选择相对应的下载方式 2.尽量 ...

  6. AWS启示录:创新作帆,云计算的征途是汪洋大海

    全文13100字,预计阅读时间15到20分钟. 开篇:创新是AWS发展的最持久驱动力 云计算,新世纪以来最伟大的技术进步之一,从2006年 Amazon Web Service(以下简称AWS)初创时 ...

  7. day27 CSS浮动、溢出 & js基本语法 & DOM文档流操作

    接day26CSS=>CSS定位 overflow属性 值 描述 示例 visible 默认值,内容不会被修剪,会呈现在元素框之外 hidden 内容会被修剪,并且其余内容是不可见的 overf ...

  8. C++编程笔记(通信)(win32平台)

    目录 一.初始化网络库 二.socket套接字 2.1服务端 2.2客户端 三.发送.接收数据 3.1发送 3.2接收数据 四.自定义的结构体 4.1 发送端 4.2接收端 IPV6版本套接字的创建 ...

  9. 【论文解读】NIPS 2021-HSWA: Hierarchical Semantic-Visual Adaption for Zero-Shot Learning.(基于层次适应的零样本学习)

    作者:陈使明 华中科技大学

  10. Hexo+next主题美化

    前言 需要在Hexo下配置next主题 Hexo配置next主题教程:https://www.cnblogs.com/xuande/p/16641543.html 更改配置以后使用素质三连:hexo ...