常用类(一)

本文详细介绍了Java中的基本数据类型包装类,如Integer、Character等,以及String和StringBuffer的特性和使用场景。还涵盖了Math类的常量和方法,以及自动装箱和拆箱的概念。特别提到了String的不可变性及其与StringBuilder的线程安全区别。
摘要由CSDN通过智能技术生成

目录

常用类(一)

1. 基本数据类型包装类

1.1 八大基本数据类型的包装类

1.2 包装类的层次结构

1.3 包装类中的常用方法

1.4 自动装箱和自动拆箱

2. 字符串相关类

2.1 String的特点

2.1.1 字符串的实例化

2.1.2 字符串的比较

2.1.3字符串的不可改变

2.1.4 字符串的常用方法

2.2 StringBuffer类

2.2.1 为什么使用StringBuffer类

2.2.2 StringBuffer的使用

2.2.3 StringBuffer和StringBuilder

3. Math类

3.1 Math类的常量和常用方法

3.2 静态导入(了解)


常用类(一)

1. 基本数据类型包装类

1.1 八大基本数据类型的包装类

对于上图有以下几点需要注意:

1.java八种基本数据类型分为四类八种,四类分别为整型、浮点型、布尔型、字符型;八种分别为byte、short、int、long、float、double、boolean、char;
2.java八种基本数据类型的字节数:分别为1、2、4、8个字节;1字节(byte、boolean)、 2字节(short、char)、4字节(int、float)、8字节(long、double);
3.整数的默认类型为int,浮点数的默认类型为double;
4.八种基本数据类型的包装类:除了char的是Character、int类型的是Integer,其他都是首字母大写
5.关于值的范围问题,需要注意char类型是无符号的,不能为负,所以是0开始的;

1.2 包装类的层次结构

java是一门面向对象的语言,但有8种基本数据类型不具备面向对象的特征,使用起来不方便,所以为这八种基本数据类型提供了对应的包装类,我们可以这样记忆:

1.对应包装类比较特殊的就是int对应Integer,char对应Character,

2.包装类对应的父类Boolean和char对应的是Object,其他的面向对象的父类也是Object,前六个包装类的父类都为Number;

1.3 包装类中的常用方法

一.静态方法valuOf()

如果参数为基本数据类型,返回包装类对象,参数为String字符串(Character类没有以String为参数的方法),返回包装类对象

举例:

package com.feisi0414;

public class Work {
    public static void main(String[] args) {
        Integer i=Integer.valueOf(10);
        System.out.println(i);
        Integer a = Integer.valueOf("100");
        System.out.println(a);
    }
}

二.静态方法parse000(000对应基本数据类型)

注意的是1.Character类没用该方法  2.作用:把字符串类型转换为基本数据类型

举例:

package com.feisi0414;

public class Work {
    public static void main(String[] args) {
        Integer a = Integer.parseInt("100");
        System.out.println(a);
    }
}

1.4 自动装箱和自动拆箱

1、 自动装箱:可以直接把一个基本数据类型赋值给包装类

例如: Double d = 3.3; //自动装箱操作

2、 自动拆箱:可以直接把一个包装类对象,赋值给基本类型

例如:int a = new Integer(3); //自动拆箱。

自动装箱和自动拆箱,简化了对包装类的操作。

2. 字符串相关类

2.1 String的特点

2.1.1 字符串的实例化

String对象实例化有两中:

一种是直接赋值(String str = “abc”; )

另一种是通过构造方法完成,(String str = new String(“abc”); )

直接赋值:只开辟一个堆内存空间,而且采用了共享设计模式,可以自动的入池,以备下次对象继续使用;

构造方法:会开辟两块内存空间,其中有一块空间将成为垃圾,而且不会自动入池,但是可以使用intern()方法进行手工入池;

从开发角度而言,很明显使用直接赋值的方式会更好一些

2.1.2 字符串的比较

1、”==”表示判断该两个字符串是否为同一对象,即在内存中的地址是否一样。如果一样则返回true 否则返回false; 和我们通常的是否为同一对象的是一样的。

举例:

public class CompareUsingEquals {
    public static void main(String[] args) {
        String firstString = "coderolls";
        String secondString = "javablog";
        String thirdString = "coderolls";
        String fourthString = "CodeRolls";
 
        System.out.println("comparing strings using equals() and equalsIgnoreCase() method\n");
 
        System.out.println(firstString.equals(secondString));
        System.out.println(firstString.equals(thirdString));
        System.out.println(firstString.equalsIgnoreCase(fourthString));
    }
}

2、boolean equals(ObjectanObject) 将此字符串与指定的对象比较。注意此时比较的是内容是否相等(字符串类对此方法进行了覆写)。

举例:

public class CompareUsingEquals {
    public static void main(String[] args) {
        String firstString = "coderolls";
        String secondString = "javablog";
        String thirdString = "coderolls";
        String fourthString = "CodeRolls";
 
        System.out.println("comparing strings using equals() and equalsIgnoreCase() method\n");
 
        System.out.println(firstString.equals(secondString));
        System.out.println(firstString.equals(thirdString));
        System.out.println(firstString.equalsIgnoreCase(fourthString));
    }
}

2.1.3字符串的不可改变

字符串的内容一旦申明,就不能被改变

做类似于+=的操作后,实际上是指向了新的地址,原来的空间里面的内容还是没有改变

如果字符串内容经常发生改变,建议使用StringBuffer

2.1.4 字符串的常用方法

2.2 StringBuffer类

2.2.1 为什么使用StringBuffer类

字符串的不变性:

  1. 一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符到String对象中。

  2. 您也许会使用+来串联字符串以达到附加新字符或字符串的目的,但+会产生一个新的String对象。

  3. 如果程序对这种附加字符串的需求很频繁,系统会频繁在内存中创建String对象,造成性能下降。所以并不建议使用+来进行频繁的字符串串联。应该使用java.lang.StringBuffer类。

2.2.2 StringBuffer的使用

举例:

举例:

package com.feisi0414;

import java.util.Scanner;

public class Test02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String st = sc.next();
        StringBuffer sb =new StringBuffer();
        char []arrs = st.toCharArray();
        if (arrs.length==8){
            for (int i = 0; i <arrs.length ; i++) {
                if (Character.isUpperCase(st.charAt(i))){
                   sb.append('M') ;
                }else {
                    sb.append(st.charAt(i));
                }
            }
            System.out.println("新字符串是:"+sb);
        }else {
            System.out.println("输入错误");
        }
    }
}

长度经常变化的字符串,可以考虑使用StringBuffer

//建议长度经常变化的字符串,采用StringBuffer

StringBuffer buffer = newStringBuffer();

buffer.append("hello");

buffer.append("world");

2.2.3 StringBuffer和StringBuilder

StringBuilder与StringBuffer的用法完全一致,唯一的区别是StringBuffer是线程安全的,而StringBuilder不是线程安全的。所以StringBuilder的性能要比StringBuffer要好。

单线程推荐使用StringBuilder,多线程使用StringBuffer。

3. Math类

3.1 Math类的常量和常用方法

特点:

1.Math 类提供了一序列基本数学运算和几何函数的方法。

2.Math类是final类,并且它的所有成员变量和成员方法都是静态的。

3.2 静态导入(了解)

语法:import static 类名.*; //导入该类下的所有静态方法和常量

例如:import static Math.*; //导入Math下的所有方法和变量(包括常量),则代码中可以直接使用方面和变量名,而不需要前缀Math。

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值