首页 > 其他 > 详细

常见工具类-高级篇(1)

时间:2021-04-14 23:24:30      阅读:19      评论:0      收藏:0      [点我收藏+]

概述

Java API (Java Application Programming Interface) :Java应用程序编程接口

(注:Java API的帮助文档可到 http://docs.oracle.com/javase/8/docs/api/ 下载)

Java中提供的最常用的包:

  java.lang:Java语言包, 该包中提供了利用Java语言进行程序设计的基础类,比如String、Math、System类,在任何类中,该包中的类不需要使用import语句进行导入,都会被自动导入。

  java.util:该包中主要包含一些实用的工具类,比如集合框架类、日期处理类、字符串解析类、随机数生成类等。

  java.awt:该包中主要包含处理用户界面和绘制图形图像的各种类。

  java.io:该包中主要包含处理输入、输出编程的各种类。

  java.net:该包中主要包含处理网络编程的各种类。

  java.sql:该包中主要包含处理数据库编程的各种类。

Object类

object类:属于Java.lang包下的,默认是所有类的父类

      参数:object,因为object是所有类的父类,所以该方法调用的实参可以是任何引用数据类型

equals()方法:

  public boolean equals(Object obj)

  作用:比较两个引用所指向的对象是否是同一个对象,即两个引用所指向对象的地址是否相等。

  返回值类型:boolean 如果两个对象相等则返回true,否则返回false

  ==既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型比的是值,比较引用数据类型时比的是地址

  equals方法一般都是某一个类重写了该方法,重写比较逻辑,然后进行应用,如:String类

注:

  ==和equals的区别:

  技术分享图片

  通俗点讲,==是看看左右是不是一个东西。equals是看看左右是不是长得一样。

  术语来讲的区别:
  1.==是判断两个变量或实例是不是指向同一个内存空间;
     equals是判断两个变量或实例所指向的内存空间的值是不是相同。
  2.==是指对内存地址进行比较;
     equals()是对字符串的内容进行比较。
  3.==指引用是否相同;
     equals()指的是值是否相同。
 

  ==比较的是引用,比较的是引用的地址值 ,equals方法,是object中的方法,如果不进行重写的话,比较的也是引用的地址值,实际和==一样。

  但是在String类中,覆盖了Object的equals()方法,该方法判断两个String对象的内容是否相等。

  (讲解:String类型,它已经实现了重写,比较的时候,先比较当前对象的地址和要比较的对象的地址是否相等,若相等,则返回true,否则,提前结束比较

  如果不相等,则判断是否为String的实例化对象,如果是,在判断长度是否相等,再判断数组的每个值,字母是否相等。如果都相等,则返回true.)

 

hashCode方法():

  public int hashCode()

  作用:返回一个对象的哈希码值。
  同一次运行程序过程中,一个对象的哈希码值一定是相同的。不同次运行程序,一个对象的哈希码值可以不同。

toString()方法: 

  public String toString()

  作用:返回一个对象的字符串表现形式。

  通常都是一个类重写了object的toString()方法。

finalize方法:

  protected void finalize()

  作用:Java进行垃圾回收时,用来销毁对象的方法

  final finally finalize 区别???

 

包装类

为了让基本数据类型的这些数据也具有面向对象的特性,Java 编程语言提供了包装类来将基本数据类型看作对象,基本类型和包装类型之间能够互相转换。

8个基本数据类型对应八个包装类:
  int -- Integer
  char -- Character
  long -- Long
   double -- Double
  boolean -- Boolean
  float -- Float
  short -- Short
  byte -- Byte

基本类型与包装类之间的转换:
  基本数据类型-->包装类:可以构造器转换 也可以直接赋值形式(自动装箱)

//用构造器转换
int i=5;
Integer in = new Integer(i);
//自动装箱
int i=5;
Integer in = i;

  包装类-->基本数据类型:可以用intValue()方法转换 也可以直接赋值(自动拆箱)

int k = in.intValue();    //Integer类内部的intValue()方法
int j = in;                  //自动拆箱
               

 

基本类型与字符串之间的转换(Integer类内部的常用方法):
  1.parseInt方法 parseDouble方法 parseFloat方法:将字符串类型的数值转换为基本数据类型

//parseInt方法
String str = "12345";
int i = Integer.parseInt(str);
System.out.println(i);

//parseDouble方法    
String str1 = "123.45";
double j = Double.parseDouble(str1);
System.out.println(j);

  2.toString 将基本数据类型转换为字符串形式

int i = 10;
String s =Integer.toString(i);
System.out.println(s);

 

包装类与字符串之间的转换:
  包装类-->字符串类型:使用包装类的toString()方法

Integer ii = 100;
String s1 = ii.toString();
System.out.println(s1);

  字符串类型-->包装类:使用包装类的valueOf()方法

String s1 = "123";
Integer i = Integer.valueOf(s1);
System.out.println(i);

小结:

技术分享图片

 

字符串类

Java中用类来描述字符串,其中最常用的字符串处理类是String,此外还有StringBuffer和StringBuilder。

字符串不属于8种基本数据类型,而是一种引用类型。String是比较特殊的数据类型,它不属于基本数据类型,但是可以和使用基本数据类型一样直接赋值,也可以像引用数据类型一样,使用关键字new进行实例化。

String对象的创建:

静态方式:直接赋值的形式 String s = "hello"


动态方式:应用String类的构造器构建对象 String s = new String("hello")

动态创建String对象时需要用到构造方法:

//初始化一个新创建的String 对象,它表示一个空字符序列
String 变量名 = new String();
//初始化一个新创建的 String对象,表示一个与该参数相同的字符序列
String 变量名 = new String (String value);
//使用一个字符数组创建一个String对象
String(char chars[])

两种方式的区别:
  以静态方式构建字符串,内存分配的过程:首先看常量池中是否有该字符串常量,如果没有,则在常量池中构建该字符串常量,然后分配地址指向该常量                        值;如果常量池中已经有该字符串常量,则不需要重新分配地址,直接指向之前已有的地址。
  以动态方式构建字符串,则每次都重新分配内存地址。

String是一个不可变的字符串常量:如果针对一个String对象进行值的改变,则会重新构建一个字符串对象, 所以频繁的更改一个字符串的值,会占用大量的内存空间

字符串的比较:  

  boolean equals(String):比较两个字符串的内容是否相等。

  boolean equalsIgnoreCase(String):比较两个字符串的内容是否相等,忽略大小写。

  int compareTo(s1:String):返回一个大于0、等于0或者小于0的整数以表明这个字符串是大于、等于还是小于s1。

  int compareToIgnoreCase(String):除了不区分大小写外,其他都和compareTo是一样的。

String s1 = "abcd";
String s2="Abcd";
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.compareTo(s2));

  boolean regionMatchs(int, String, int, int):如果这个字符串指定的子域精确匹配字符串s1中指定的子域则返回true。

//比较s1字符串序列1开始的两个字符和s2字符串序列1开始的两个字符是否相等,相同返回true
String s1 = "aabbccdd";
String s2 = "AAbbccDD";
System.out.println(s1.regionMatches(1, s2, 1, 2));

  boolean startsWith(String prefix):判断字符串是否以指定字符串开头。

  boolean endsWith(String suffix):判断字符串是否以指定字符串结束。

String s1 = "aabbccdd";
System.out.println(s1.startsWith("aab"));
System.out.println(s1.endsWith("dd"));

 

字符串和数组之间的转换

1.字符串转成字符型数组    toCharArray()

String str = "I love Java!";
char[] ch = str.toCharArray();
System.out.println(ch.length);
System.out.println(ch);

2.字符串转成字节型数组 getBytes():按照默认编码字符集转换  ISO8859-1

            getBytes("utf-8"):按照指定编码字符集转换

String str = "I love Java!";
byte[] bytes = str.getBytes();
System.out.println(bytes.length);
System.out.println(Arrays.toString(bytes));

//结果:
12
[73, 32, 108, 111, 118, 101, 32, 74, 97, 118, 97, 33]

 

后续:常见工具类-高级篇(2)

2021-4-14

 

常见工具类-高级篇(1)

原文:https://www.cnblogs.com/SheepDog/p/14659707.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!