常用类

常用类

Object类

  • 超类、基类、所有类的直接或间接父类,位于继承树的最顶层。
  • 任何类,如没有书写extends显示继承某个类,都默认直接继承object类,否则为间接继承。
  • object类中所定义的方式,是所有对象都具备的方法。
  • object类型可以储存任何对象。
    • 作为参数,可接受任何对象。
    • 作为返回值,可返回任何对象。

getClass()方法

  • public final Class<?> getClass() {}
  • 返回引用中存储的实际对象类型
  • 应用:通常用于判断两个引用中实际存储对象类型是否一致

hashCode()方法

  • public int hashCode(){}
  • 返回该对象的哈希码值
  • 哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
  • 一般情况下相同对象返回相同哈希码

toString()方法

  • public String toString(){}
  • 返回该对象的字符串表示(表现形式)
  • 可以根据程序需求覆盖该方法,如:展示对象各个属性值

equals()方法

  • public boolean equals(Object obj){}
  • 默认实现为(this == obj),比较两个对象地址是否相同
  • 可进行覆盖,比较两个对象的内容是否相同

finalize()方法

  • 当对象被判定为垃圾对象时,由jvm自动调用此方法,用以标记垃圾对象,进入回收队列。
  • 垃圾对象:没有有效引用指向此对象时,为垃圾对象。
  • 垃圾回收:由Gc销毁垃圾对象,释放数据存储空间。
  • 自动回收机制:jvm的内存耗尽,一次性回收所有垃圾对象。
  • 手动回收机制:使用System.gc();通知jvm执行垃圾回收。

包装类

基本数据类型所对应的引用数据类型

object类可统一所有数据,包装类的默认值是null

  • byte—Byte
  • short—Short
  • int—Integer
  • long—Long
  • float—Float
  • double—Double
  • boolean—Boolean
  • char—Character

类型转换与装箱,拆箱

装箱:把基本数据类型转换引用数据类型。

拆箱:把引用数据类型转换成基本数据类型。

jdk1.5之前:

package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        int num = 13;
        //装箱
        Integer integer = new Integer(num);
        Integer integer1 = Integer.valueOf(num);
        //拆箱
        Integer integer2 = new Integer(12);
        int num2 = integer2.intValue();
    }
}

jdk1.5之后自动装箱、拆箱:

package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
//        int num = 13;
//        //装箱
//        Integer integer = new Integer(num);
//        Integer integer1 = Integer.valueOf(num);
//        //拆箱
//        Integer integer2 = new Integer(12);
//        int num2 = integer2.intValue();
        int age = 30;
        //自动装箱
        Integer integer= age;
        //自动拆箱
        int age2 = integer;
    }
}

基本类型和字符串之间的转换

package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        //1,基本类型转换成字符型
        int n1=100;
        //使用+号
        String s1 = n1+" ";
        //使用Integer中的toString()方法
        String s2=Integer.toString(n1);
        System.out.println(s1);
        System.out.println(s2);

        //2,字符串转换成基本数据类型
        String str = "150";
        //使用Integer.parsxxx();
        int n2 = Integer.parseInt(str);
        System.out.println(n2);

        //布尔类型专程基本类型,"true"-->true  不是"true"--->false
        String str2 = "true";
        boolean b1=Boolean.parseBoolean(str2);
        System.out.println(b1);

    }
}

integer缓冲区

整数缓冲区:

  • java预选创建了256个常用的整数包装类型对象。-128~127

  • package com.xiao;
    
    public class Demo07 {
        public static void main(String[] args) {
            Integer integer1 = new Integer(100);
            Integer integer2 = new Integer(100);
            System.out.println(integer1 == integer2);
    
            Integer integer3=Integer.valueOf(100);
            Integer integer4=Integer.valueOf(100);
            System.out.println(integer3==integer4);
    
            Integer integer5=Integer.valueOf(200);
            Integer integer6=Integer.valueOf(200);
            System.out.println(integer5==integer6);
        }
    }
    

String类

string

  • 字符串常量,创建之后就不可以改变。
  • 字符串字面值存储在字符池中,可以共享。
  • String s = “hello”;产生一个对象,字符串池中存储。
  • String s = new String(“hello”);//产生两个对象,堆、池各存储一个。
package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        String name = "zhangsan";//zhangsan常量储存在字符串池中
        name = "hello";//"hello"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新定义一个
        String name2 = "hello";//给name2赋值,是去常量池中找有没有hello,有就赋值,没有就重新创建一个

        //演示字符串的另一种创建方式
        String str= new String("java是最好的编程语言");
        String str2= new String("java是最好的编程语言");
        System.out.println(str==str2);
        System.out.println(str.equals(str2));
    }
}

常用方法

  • public in length();返回字符串的长度
  • public char charAt(int index):根据下标获取字符
  • public boolean contains(String str): 判断当前字符串中是否包含str
package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        //length();返回字符串的长度
        //charAt(int index);返回某个未知的字符
        //contains(String str);判断是否包换某个字符串
        String comtent = "java是世界上最好的编程语言";
        System.out.println(comtent.length());
        System.out.println(comtent.charAt(comtent.length()-1));
        System.out.println(comtent.contains("java"));
        System.out.println(comtent.contains("1111"));
    }
}
  • public char[] toCharArray():将字符串转换成数组
  • public int indexOf(String str):查找str首次出现的下标,存在,则返回改下标,不存在,则返回-1
  • public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
package com.xiao;

import java.util.Arrays;

public class Demo07 {
    public static void main(String[] args) {
        // toCharArray():将字符串转换成数组
        //indexOf(String str):查找str首次出现的下标,存在,则返回改下标,不存在,则返回-1
        //lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
        String content = "java是世界上最好的编程java语言java";
        System.out.println(Arrays.toString(content.toCharArray()));
        System.out.println(content.indexOf("java"));
        System.out.println(content.indexOf("java",4));
        System.out.println(content.lastIndexOf("java"));//从最后开始找
    }
}
  • public String trim():去掉字符串前后的空格。
  • public String toUpperCase():将小写转成大写。
  • public boolean enWith(String str):判断字符串是否以str结尾。
package com.xiao;

import java.util.Arrays;
import java.util.Locale;

public class Demo07 {
    public static void main(String[] args) {
        //trim():去掉字符串前后的空格
        //toUpperCase():将小写转成大写
        //enWith(String str):判断字符串是否以str结尾
        String content2 = "  hello world";
        System.out.println(content2.trim());
        System.out.println(content2.toUpperCase());
        System.out.println(content2.toLowerCase());

        String filename = "hello.java";
        System.out.println(filename.endsWith("java"));
        System.out.println(filename.startsWith("hello"));
    }
}
  • public String replace(char oidChar,char newChar):将旧字符串替换成新字符串

  • public String[] split(String str):根据str做拆分。

  • package com.xiao;
    
    import java.util.Arrays;
    import java.util.Locale;
    
    public class Demo07 {
        public static void main(String[] args) {
            //replace(char old,char new);用新的字符串替换成旧的字符串
            //split();对字符进行拆分
            String content = "hello.java";
            System.out.println(content.replace("java", "php"));
    
            String say = "java is the best   programing language,java xiang";
            String[] arr = say.split("[ ,]+");
            System.out.println(arr.length);
            for (String string: arr) {
                System.out.println(string);
            }
        }
    }
    
  • 忽略大小写equalsIgnoreCase

  • compare()比较字符串大小

package com.xiao;

import java.util.Arrays;
import java.util.Locale;

public class Demo07 {
    public static void main(String[] args) {
        //补充两个方法equals,compare()比较大小
        String s1 = "hello";
        String s2 = "Hello";
        System.out.println(s1.equalsIgnoreCase(s2));

        String s3 = "abc";
        String s4 = "xyz";
        System.out.println(s3.compareTo(s4));//比较字符串大小

        String s5 = "abc";
        String s6 = "abcxyz";
        System.out.println(s5.compareTo(s6));//比长度
    }
}

String 案例

package com.xiao;

import java.util.Arrays;
import java.util.Locale;

public class Demo07 {
    public static void main(String[] args) {
        String string = "this is a text";
        //1,将string中的单词单独取出来
        String[] arr = string.split(" ");
        for (String s : arr
             ) {
            System.out.println(s);
        }

        //2,将string中的text替换为practice
        String str2 = string.replace("text","practice");
        System.out.println(str2);

        //3,在text前面插入一个easy
        String str =string.replace("text","easy text");
        System.out.println(str);

        //4,将每个单体首字母大写
        for (int i = 0; i<arr.length;i++){
            char first=arr[i].charAt(0);
            //把第一个字符转成大写
            char Upper=Character.toUpperCase(first);

            String sss = Upper+arr[i].substring(1);
            System.out.println(sss);
        }
    }
}

可变字符串

StringBuffer:可变长字符串,jdk1.0提供,运行效率慢、线程安全

StringBuilder:可变长字符串,jdk5.0提供,运行效率块、线程不安全

package com.xiao;

import java.util.Arrays;

public class Demo06 {
    public static void main(String[] args){
        StringBuffer sb = new StringBuffer();
        //1,append();加入
        sb.append("1111");
        System.out.println(sb);
        sb.append("2222");
        System.out.println(sb);
        sb.append("3333");
        System.out.println(sb);

        //2, insert();最前面添加
        sb.insert(0,"我在最前面");
        System.out.println(sb);
        //3, replace()替换
        sb.replace(0,5,"hello");
        System.out.println(sb);
        //4, delete删除
        sb.delete(0,4);
        System.out.println(sb);


    }
}

他俩方法同理

BigDecimal的使用

package com.xiao;

import java.math.BigDecimal;
import java.util.Arrays;

public class Demo06 {
    public static void main(String[] args){
        BigDecimal b = new BigDecimal("1.7");
        BigDecimal b2 = new BigDecimal("0.6");

        BigDecimal b3 = b.subtract(b2);//-
        System.out.println(b3);
        BigDecimal b4 = b.add(b2);//+
        System.out.println(b4);
        BigDecimal b5 = b.multiply(b2);//*
        System.out.println(b5);
        BigDecimal b6 = b.divide(b2,2,BigDecimal.ROUND_HALF_UP);//*
        System.out.println(b6);

    }
}

Date类

  • Date表示特定的瞬间。精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。

  • 时间单位

    • 1秒=1000毫秒

    • 1毫秒=1000微秒

    • 1微秒=1000纳秒

    • package com.xiao;
      
      import java.math.BigDecimal;
      import java.util.Arrays;
      import java.util.Date;
      
      public class Demo06 {
          public static void main(String[] args){
              //1,创建Date对象
              Date date = new Date();
              System.out.println(date);
              System.out.println(date.toLocaleString());
              Date date1 = new Date(date.getTime()-60*60*24*1000);
              System.out.println(date1.toLocaleString());
              //2,方法after before
             boolean b1=  date.after(date1);
              System.out.println(b1);
              boolean b2 = date.before(date1);
              System.out.println(b2);
              //比较compareTo();
              int d = date.compareTo(date1);
              int d2 = date1.compareTo(date);
              int d3 = date.compareTo(date);
              System.out.println(d);
              System.out.println(d2);
              System.out.println(d3);
              //比较是否相等equals();
              boolean d1 = date.equals(date1);
              System.out.println(d1);
          }
      }
      

      Calendar

      • calender提供了获取或者设置各种日历字段的方法

      • 构造方法

        • protected Talendar():由于修饰符是protected,所以无法直接创建该对象。

        • package com.xiao;
          
          import java.math.BigDecimal;
          import java.util.Arrays;
          import java.util.Calendar;
          import java.util.Date;
          
          public class Demo06 {
              public static void main(String[] args){
                  //1创建Calender对象
                  Calendar calendar = Calendar.getInstance();
                  System.out.println(calendar.getTime());
                  System.out.println(calendar.getTimeInMillis());
          
                  //2获得时间信息
                  //获得年
                  int year = calendar.get(Calendar.YEAR);
                  //月 +1
                  int month = calendar.get(Calendar.MONTH);
                  //日
                  int day = calendar.get(Calendar.DAY_OF_MONTH);
                  //小时
                  int hour = calendar.get(Calendar.HOUR_OF_DAY);//hour是12小时,这个是24小时制
                  //分钟
                  int minuter = calendar.get(Calendar.MINUTE);
                  //秒
                  int second = calendar.get(Calendar.SECOND);
                  System.out.println(year + " "+(month+1)+" " + day + " " + hour +  " " + month + " " + second);
          
                  //修改时间
                      Calendar calendar1 =  Calendar.getInstance();
                      calendar1.set(Calendar.DAY_OF_MONTH,5);
                  System.out.println(calendar1.getTime().toLocaleString());
                  //add修改时间
                  calendar1.add(Calendar.HOUR,1);
                  System.out.println(calendar1.getTime().toLocaleString());
                  //  获取当前时间的最大值,最小值
                  int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
                  int max2 = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);
                  System.out.println(max);
                  System.out.println(max2);
              }
          }
          

          SimpleDateFormat

          • SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期具体类。

          • 进行格式化(日期->文本)、解析(文本-》日期)

          • 常用的时间模式字母

          • package com.xiao;
            
            import java.math.BigDecimal;
            import java.text.ParseException;
            import java.text.SimpleDateFormat;
            import java.util.Arrays;
            import java.util.Calendar;
            import java.util.Date;
            
            public class Demo06 {
                public static void main(String[] args) throws ParseException {
                    //1创建simpleDataFormat对象y年m月
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM//dd");
                   // SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM//dd HH-mm-ss");
                    //2创建Date类
                    Date date = new Date();
                    //格式化date(把日期转成字符串)
                    String str = sdf.format(date);
                    System.out.println(str);
                    //解析(把字符串转成日期)
            
                    Date date1 = sdf.parse("1990/05/01");
                    System.out.println(date1);
                }
            }
            

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法&#xff0c;在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较&#xff0c;从而确定目标数是在中间数的左边还是右边&#xff0c;将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令&#xff1a; 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体&#xff0c;就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛&#xff0c;这门课会介绍许多方法去利用离散点最大化地逼近这个函数&#xff0c;甚至它的导数、积分&#xff0c;甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下&#xff0c;坐标杭州&#xff0c;14届本科毕业&#xff0c;算上年前在阿里巴巴的面试&#xff0c;一共有面试了有6家公司&#xff08;因为不想请假&#xff0c;因此只是每个晚上去其他公司面试&#xff0c;所以面试的公司比较少&#xff09; ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目&#xff1a; 解题思路&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 总代码&#xff1a; 题目&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者&#xff08;Observer&#xff09;模式的定义&#xff1a;指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验&#xff0c;睡觉过程中突然意识清醒&#xff0c;身体却动弹不了。这时候感觉非常恐怖&#xff0c;希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况&#xff0c;一年有一百多次&#xff0c;那时候很害怕晚上到来&#xff0c;睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别&#xff08;move-only type&#xff0c;只移型别还有std::mutex等&#xff09;。 结合一下工厂模式&#xff0c;看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在&#xff0c;但代码中需要用到它&#xff0c;通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能&#xff0c;通常需要完成两步操作&#xff1a;一.是在Web页面中添加上传输入项&#xff1b;二是在Servlet中读取上传文件的数据&#xff0c;并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度&#xff08;&#xff1f;&#xff09; 不管两个高积木之间的的积木是怎样乱七八糟的高度&#xff0c;最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的&#xff0c;用的是MFC VS2019. 详见&#xff1a;http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936&#xff0c;然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一&#xff1a;区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N&#xff0c;表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家&#xff0c;在他的着作中曾经提到&#xff1a;「若有一只免子每个月生一只小免子&#xff0c;一个月后小免子也开始生产。起初只有一只免子&#xff0c;一个月后就有两只免子&#xff0c;二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源&#xff0c;一般分为两类&#xff1a; 系统内置资源&#xff1a;Android SDK中所提供的已经定义好的资源&#xff0c;用户可以直接拿来使用。 用户自定义资源&#xff1a;用户自己定义或引入的&#xff0c;只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法&#xff08;Algorithm&#xff09;是一系列解决问题的清晰指令&#xff0c;也就是说&#xff0c;能够对一定规范的输入&#xff0c;在有限时间内获得所要求的输出。 如果一个算法有缺陷&#xff0c;或不适合于某个问题&#xff0c;执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python&#xff0c;NLP&#xff0c;知识图谱&#xff0c;机器学习&#xff0c;深度学习人工智能&#xff1a;知识图谱实战前言一、实体建模工具Protegepython&#xff0c;NLP&#xff0c;知识图谱&#xff0c;机器学习&#xff0c;深度学习 人工智能&#xff1a;知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…