Java中的常用类--->包装类、String类、Data类、Math类、File类、枚举类

本文详细介绍了Java中的包装类如何处理基本类型转换,自动装箱与拆箱的原理,以及字符串的String和StringBuilder/StringBuffer类的使用技巧,包括字符串连接和格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、包装类;

        1、包装类是将基本类型封装到一个类中,包含属性和方法,方便对象操作。包装类位于                      java.lang包中;

        2、基本数据类型转换为包装类:

Integer intValue = new Integer(21);
或Integer intValue = new Integer("21");
Integer intValue = Integer.valueOf("21");

        3、包装类转换为基本类型

Integer integerId=new Integer(25);
int intId=integerId.intValue();

        4、基本类型和包装类的自动转换(包装类并不是用来取代基本类型的

Integer intObject = 5;
int intValue = intObject;

二、自动装箱和自动拆箱(auto-boxing&unboxing)

        ·自动装箱:基本类型就自动地封装到与它相同类型的包中,如:integer i = 100;

        -本质上是编译器编译时为我们添加了:integer i = integer.valueOf(100);

        ·自动拆箱:包装类对象自动转换成基本类型数据,如:int a = new Integer(100);

        -本质上是编译器编译时为我们添加了:int a = new Integer(100).intValue();

三、字符串

        1、String类位于java.lang包中,具有丰富的方法

        2、Java字符串就是Unicode字符序列,例如串“Java”就是四个Unicode字符J,a,v,a组成的

        3、Java允许使用符号“+”把两个字符串连接起来:String s1 = "Hello";String s2 = "World";

             String s = s1+s2;//HelloWorld

        4、String类的常用方式:

                >char charAt(int index)//返回字符串中第index个字符;

                >boolean equals(String other)//如果字符串相等,返回true;

                >boolean equalslgnoreCase(String other)//如果字符串和other相等(忽略大小写),返                    回true;

                >int indexOf(String str)  lastIndexOf(String str,int idx)

                >int length()//返回字符串长度

                >String replace(char oldChar , char newChar)//返回一个新串,它是通过newChar替换                      此字符串中出现的所有oldChar而生成的;

                >boolean startsWith(String prefix) //如果字符串以prefix开始,则返回true

                >boolean endsWith(String prefix) //如果字符串以prefix结尾,则返回true
                >String substring(int beginIndex)
                >String substring(int beginIndex,int endIndex) //返回一个新字符串,该串包含从原始字                    符串beginIndex到串尾戒endIndex-1的所有字符
                >String toLowerCase() //返回一个新字符串,该串将原始字符串中的所有大写字母改成                    小写字母
                >String toUpperCase() //返回一个新字符串,该串将原始字符串中的所有小写字母改成                    大写字母
                >String trim() //返回一个新字符串,该串删除了原始字符串头部和尾部的空格
        5、字符串比较
                ·equals判断字符串值相等,==判断字符串对象引用相等
 
public class StringTest3 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        String s3 = new String("abc");
        String s4 = new String("abc");
        System.out.println(s1==s2);//true
        System.out.println(s1==s3);//false
        System.out.println(s3==s4);//false
    } 
}
上机练习一:
import java.util.Scanner;

public class Register {
    String name;
    String passwork;
    String newPasswork;
    public void nameShow(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = scanner.next();
        System.out.println("请输入密码:");
        String password = scanner.next();
        System.out.println("请再次输入密码:");
        newPasswork = scanner.next();
        while (name.length() < 3 || (password.equals(newPasswork)==false) || (password.length()<6)){
            if(name.length()<3){
                System.out.println("用户名不能小于3");
            }else if(password.length()<6||password.equals(newPasswork)==false){
                System.out.println("两次输入密码不同!或密码长度不能小于6位!");
            }
            System.out.println("\n"+"请重新输入:");
            System.out.println("请输入用户名:");
            name = scanner.next();
            System.out.println("请输入密码:");
            password = scanner.next();
            System.out.println("请再次输入密码:");
            newPasswork = scanner.next();
        }
        System.out.println("注册成功!请牢记用户名和密码!");
    }

}

public class Verify extends Register {
    public static void main(String[] args) {
        Verify verify = new Verify();
        verify.nameShow();
    }
}

6、字符串连接

        方法一:使用“+”;

        方法二:使用String类的concat()方法

String s = new String("你好,");
String name = new String("张三!");
String sentence = s.concat(name);
System.out.println(sentence);

上机练习二:

public class Fish {
    public static void main(String[] args) {
        String word = "Hello,";
        word = word.trim();
        String str = word.concat("小鱼儿!");
        int index1 = str.indexOf(',');
        int index2 = str.indexOf('!');
        System.out.println(str.substring(6,10));

    }
}

上级练习三:

public class Song {
    public static void main(String[] args) {
        String str = new String("长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山");
        System.out.println("***原歌词格式***");
        System.out.println(str);
        String [] s = str.split(" ");
        System.out.println("***拆分后格式***");
        for (int i = 0; i < s.length; i++) {
            System.out.println(s[i]);
        }
    }
}

上机练习四:

import java.util.Scanner;

public class Checking {
    public static void main(String[] args) {
        int number = 0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = scanner.next();
        System.out.println("请输入需要查找的字符:");
        String str1 = scanner.next();
        for (int i = 0; i < str.length()-1; i++) {
            String str2 = str.substring(i,i+1);
            if(str2.equals(str1)){
                number++;
            }
        }
        System.out.println(str+"中包含"+number+"个"+str1);
    }
}

四、StringBuffer类与StringBuilder类

        1、StringBuffer:String增强版,字符串缓冲区,是一个容器;

        2、StringBuffer声明:

StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer("aaa");

        3、StringBuffer类:

public class sbAppend {
    public static void main(String[ ] args) {
        StringBuffer sb = new StringBuffer("青春无悔");
        int num=110;
        StringBuffer sb1 = sb.append("我心永恒");
        System.out.println(sb1);
        StringBuffer sb2 = sb1.append('啊');
        System.out.println(sb2);
        StringBuffer sb3 = sb2.append(num);
        System.out.println(sb3);
    }
}

        4、利用StringBuffer类的length()和insert()方法实现需求;

             

import java.util.Scanner;

public class Number {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一串数字:");
        String number = scanner.next();
        StringBuffer str = new StringBuffer(number);
        for (int i = str.length()-3; i > 0; i = i-3) {
            str.insert(i,",");
        }
        System.out.println(str);
    }
}

 上级练习五:

import java.util.Scanner;

public class Goods {
    String [] goods = new String[]{"电风扇","洗衣机","电视机","冰箱","空调"};
    double [] price = new double[]{124.23,4500,8800.9,5000.88,4456};
    public boolean register(){
        boolean con = false;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = scanner.next();
        System.out.println("请输入密码:");
        String password = scanner.next();
        if(name.equals("tom")&&password.equals("123456")){
            System.out.println("登陆成功!");
            con = true;
        }else{
            System.out.println("用户名或密码错误!");
        }
        return con;
    }
    public StringBuffer change(double price){
        StringBuffer stringBuffer = new StringBuffer(String.valueOf(price));
        for (int i = stringBuffer.indexOf(".") - 3; i > 0; i=i-3) {
            stringBuffer.insert(i,',');
        }
        return stringBuffer;
    }
    public void commodity(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("***欢迎光临腾讯互联商品批发城***");
        System.out.println("\t编号\t商品\t\t价格");
        for (int i = 0; i < goods.length; i++) {
            System.out.print("\t"+(i+1)+"\t");
            System.out.print("\t"+goods[i]+"\t");
            System.out.print("\t"+change(price[i])+"\t"+"\n");
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Goods gs = new Goods();
        if (gs.register()){
            gs.commodity();
            System.out.println("请输入您要批发的商品编号:");
            int num = scanner.nextInt();
            System.out.println("请输入您要批发的数量:");
            int number = scanner.nextInt();
            double d = gs.price[num-1]*number;
            System.out.println("您需要付款:"+gs.change(d));
        }
    }
}

        5、字符串的选用:

▪                 String:不可变字符序列
                ▪ StringBuilder:可变字符序列、效率高、线程不安全
                ▪ StringBuffer:可变字符序列、效率低、线程安全
                ▪ String使用陷阱:
                – string s="a"; //创建了一个字符串
                s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串
                s+"b"。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内
                存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

五、时间处理相关类

        1、Data时间类(java.util.Data)

                Data类:表示日期和时间,提供操作日期和时间各组成部分的方法

Date date = new Date(); //创建日期对象
SimpleDateFormat formater = new SimpleDateFormat("yyyyMM-dd HH:mm:ss");//定制日期格式
String now = formater.format(date);
System.out.println(now);

六、Math类

        1、包含了常见的数学运算函数。

             random()生成[0,1)之间的随机浮点数

             ▪ 生成:0-10之间的任意整数:
             – int a = (int)(10*Math.random());
             ▪ 生成:20-30之间的任意整数:
             – int b = 20 + (int)(10*Math.random());

七、枚举

public enum  EnumDemo {
    U1("初级"),U2("中级"),U3("高级");
    private String grade;
    EnumDemo(String grade){
        this.grade = grade;
    }
    public static void main(String[] args) {
        System.out.println(EnumDemo.U1.grade);
        System.out.println(EnumDemo.U2.grade);
        System.out.println(EnumDemo.U3.grade);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值