当前位置: 代码迷 >> 综合 >> JavaSE学习笔记(Day7.5)
  详细解决方案

JavaSE学习笔记(Day7.5)

热度:61   发布时间:2023-11-25 01:44:52.0

基本类型包装类

  • 基本数据类型不是面向过程的,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。
  • 包装类(IntegerDouble) 封装了基本的数据类型的值,并提供了一系列的操作方法。

常用操作: 常用的操作之一:用于基本数据类型与字符串之间的转换。

基本类型和包装类的对应
byte——Byte
short——Short
int ——Integer
long——Long
float——Float
double——Double
char——Character
boolean——Boolean

需求:
a:将100转换成二进制 , 八进制 , 十六进制
b:判断一个数是否在int的范围内

package org.westos.demo;public class MyTest {
    public static void main(String[] args) {
    /* 需求:a:将100转换成二进制, 八进制, 十六进制b:判断一个数是否在int的范围内*/int num=100;//Integer integer = new Integer(num);/* static String toBinaryString ( int i)以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。static String toHexString ( int i)以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。static String toOctalString ( int i)以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。*/String s = Integer.toBinaryString(num);String s1 = Integer.toHexString(num);String s2 = Integer.toOctalString(num);System.out.println(s);System.out.println(s1);System.out.println(s2);/* static int MAX_VALUE值为 231-1 的常量,它表示 int 类型能够表示的最大值。static int MIN_VALUE值为 -231 的常量,它表示 int 类型能够表示的最小值。 */if(Integer.MIN_VALUE<=55555&&55555<=Integer.MAX_VALUE){
    System.out.println("在Int类型的范围内");}}
}

3、Integer类的概述和构造方法

Integer类概述
通过JDK提供的API,查看Integer类的说明
img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjd6MlI7-1639270710256)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

Integer 类在对象中包装了一个基本类型 int 的值,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法

构造方法
public Integer(int value)
public Integer(String s) //要个一个字面上是数字的字符串,如果不是就会报错

package org.westos.demo;public class MyTest2 {
    public static void main(String[] args) {
    /* Integer( int value)构造一个新分配的 Integer 对象,它表示指定的 int 值。Integer(String s)构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。*/int num = 100;Integer integer = new Integer(num);//Integer 类重写了父类的toString()方法,把他包装的值,转换成了字符串。String s = integer.toString();System.out.println(s);//构造方法要的是 字面上是一个有效数字的字符串 不然就会报 NumberFormatException 异常Integer integer1 = new Integer("100");}
}

4、String和int类型的相互转换

int ——String
a:和""进行拼接
b:public static String valueOf(int i)
c:int – Integer – String
d:public static String toString(int i)

String——int
a:String – Integer – intValue();
b:public static int parseInt(String s)

package org.westos.demo;public class MyTest3 {
    public static void main(String[] args) {
    // int======String 100---------"100"int num=100; //"100"//方式1String s=num+"";//方式2String s1 = String.valueOf(num); //记这个//方式3String s2 = new Integer(num).toString();//String=======int "100"-----100String a="100";//方式1Integer integer = new Integer(a);int i = integer.intValue();System.out.println(i);//方式2:直接调用Integer类中的静态方法int i1 = Integer.parseInt(a); //经常用这个System.out.println(i1);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dZtibF4O-1639270710258)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

5、自动装箱和拆箱

? 自动装箱:把基本类型转换为包装类类型
? 自动拆箱:把包装类类型转换为基本类型

注意事项
在使用时,Integer x = null;代码就会出现NullPointerException。
建议先判断是否为null,然后再使用。

package org.westos.demo;public class MyTest4 {
    public static void main(String[] args) {
    //JDK1.5之后提供的语法//自动拆箱:将包装类型自动转换成他所对应的基本类型。//自动装箱:将基本类型自动转换成他所对应的包装类型。int num=100;//Integer integer = new Integer(num);Integer a=num; // 自动装箱Integer b=20;  // 自动装箱Integer x = new Integer(1);Integer y = new Integer(2);//自动拆箱int sum=x+y;System.out.println(sum);}
}

StringBuffer 与 StringBuilder

由于String是不可变的.我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间 所有就出现了StringBuffer。

概述

  • StringBuffer类 : 线程安全的可变字符序列

StringBuffer的构造方法

public StringBuffer(): 无参构造方法
public StringBuffer(int capacity): 指定容量的字符串缓冲区对象
public StringBuffer(String str): 指定字符串内容的字符串缓冲区对象

StringBuffer的方法

public int capacity():返回当前容量。 理论值
public int length():返回长度(字符数)。 实际值

public class MyTest {
    public static void main(String[] args) {
    // StringBuffer 就是一长度可变的字符容器,如果你有拼串的需求,可以采用字符容器来拼串。//StringBuffer()//构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。StringBuffer sbf = new StringBuffer();int c1 = sbf.capacity();System.out.println(c1);//16sbf.append("aaa");System.out.println(sbf.capacity());//获取容器的容量;16System.out.println(sbf.length());//获取容器中字符的长度;3//StringBuffer( int capacity)//构造一个不带字符,但具有指定初始容量的字符串缓冲区。StringBuffer sbf1 = new StringBuffer(100);int c2 = sbf1.capacity();System.out.println(c2);//100// StringBuffer(String str)// 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。StringBuffer sbf2 = new StringBuffer("aaaaaa");int c3 = sbf2.capacity();System.out.println(c3);//22}
}

StringBuffer的添加功能

public StringBuffer **append**(String str):
可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

public class MyTest1 {
    public static void main(String[] args) {
    StringBuffer sbf = new StringBuffer();sbf.append("hahaha");//往容器中追加内容,返回的还是原来的容器对象。所以我就链式编程,不断的往容器中追加内容。sbf.append(11).append('a').append(3.14).append("哈哈").append(new char[]{
    'a','s','d'});//StringBuffer类重写了父类的toSting方法,把容器中的的数据转换成字符串返回。System.out.println(sbf.toString());}
}// 输出结果: 
//hahaha11a3.14哈哈asd

public StringBuffer **insert**(int offset,String str): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

public class MyTest2 {
    public static void main(String[] args) {
    StringBuffer sbf = new StringBuffer("aaabbbccc");sbf.insert(3,"我");//根据指定的索引位置进行添加,返回的还是原来的那个容器,所以可以链式编程,不断的添加sbf.insert(7,"爱").insert(11,"吃");System.out.println(sbf);}
}

StringBuffer类的删除功能
public StringBuffer deleteCharAt(int index): 删除指定位置的字符,并返回本身
public StringBuffer delete(int start,int end): 删除从指定位置开始指定位置结束的内容,并返回本身

public class Mytest3 {
    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();sb.append("我好饿我要吃饭我好饿我要吃饭我好饿我要吃饭");//deleteCharAt(0) 根据索引,每次删除容器中的一个字符,返回的还是容器本身sb.deleteCharAt(0).deleteCharAt(0).deleteCharAt(0).deleteCharAt(0);//sb.delete(0, 4); 根据起始索引,和终止索引,删除容器中一段内容,返回的还是容器本身,索引,含头不含尾sb.delete(0, 4);System.out.println(sb.toString());}
}//好饿我要吃饭我好饿我要吃饭

StringBuffer的替换、反转和查找功能

StringBuffer的替换功能 public StringBuffer replace(int start,int end,String str): 从start开始到end用str替换

StringBuffer的反转功能 public StringBuffer reverse(): 字符串反转

`从头查找该字符串,在容器中第一次出现的索引,如果找不到就返回-1
int indexOf (String str)
从指定索引处开始查找该字符串,第一次出现的索引,如果找不到就返回-1
int indexOf (String str,int fromIndex)

从后往前找 int lastIndexOf (String str) int lastIndexOf (String str,int fromIndex)

public class MyTest4 {
    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();sb.append("我好饿我要吃饭我好饿我要吃饭我好饿我要吃饭");sb.replace(0,6,"我好困我要睡觉");System.out.println(sb);sb.reverse();System.out.println(sb);sb.reverse();int a = sb.indexOf("睡觉");System.out.println(a);int b = sb.indexOf("吃饭", 6);System.out.println(b);int c = sb.lastIndexOf("睡觉");System.out.println(c);}
}
//我好困我要睡觉饭我好饿我要吃饭我好饿我要吃饭
//饭吃要我饿好我饭吃要我饿好我饭觉睡要我困好我
//5 
//13
//5

StringBuffer的截取功能

public String substring(int start):

从指定位置截取到末尾 public String substring(int start,int end):

  • 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
public class MyTest5 {
    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();sb.append("我好饿我要吃饭");//根据起始索引和终止索引,截取容器中的一段内容,以字符串形式返回,索引含头不含尾。String s = sb.substring(1, 3);System.out.println(s);//好饿}
}
  • 注意 : 返回值的类型已经不是StringBuffer本身

String类StringBuffer类StringBuilder区别

● String:是字符常量,适用于少量的字符串操作的情况
● StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
● StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

Math类

  • java.lang.Math 提供了静态方法用于科学计算,其方法的参数和返回值类型一般为double类型
  • abs 取绝对值
  • sqrt 平方根
  • pow(double a, double b) a的b次幂
  • max(double a, double b)
  • min(double a, double b)
  • random() 返回 0.0 到 1.0 的随机数
  • long round(double a) double型的数据a转换为long型(四舍五入)

Random类

  • Random类概述
    此类用于产生随机数
  • 构造方法
    public Random()
  • 成员方法
    public int nextInt() public int nextInt(int n)
import java.util.Random;public class TestRandom {
    public static void main(String[] args) {
    Random a = new Random();int x = a.nextInt(); // 给x 赋值随机数int y = a.nextInt(10);  // 给y 赋值0 - 10 的随机数System.out.println(x);System.out.println(y);}
}