目录

一、String类

二、StringBuffer类

三、System类

四、Runtime类

五、Math类

六、Random类

七、包装类

八、Date类

九、Calendar类

十、DateFormat类

十一、SimpleDateFormat类

十二、JDK新特性——Switch语句支持字符串


一、String类

1.String类的初始化

①使用字符串常量直接初始化一个String对象

String str = "abc";   

②使用String的构造方法初始化字符串对象

        //   创建一个空的字符串String str1 = new String();// 创建一个内容为abcd的字符串String str2 = new String("abcd");//   创建一个内容为字符数组的字符串char []charArray = new char[] {'A','B','C'};String str3 = new String(charArray);

2.String类的常见操作

①字符串的基本操作:

        String str = new String("Hello World");   System.out.println("字符串长度:"+str.length());System.out.println("字符l第一次出现的位置:"+str.indexOf("l"));System.out.println("字符l最后一次出现的位置:"+str.lastIndexOf("l"));System.out.println("字符串中的第一个字符:"+str.charAt(0));/* 访问字符串中的字符时,不能超出字符的索引范围,否则会出现异常 */

②字符串的转换操作:

        String str = new String("Hello World");   System.out.print("将字符串转为字符数组的结果:");char charArray[] = str.toCharArray(); for(int i = 0 ; i < str.length(); ++i){// 如果不是数组最后一个元素,则在元素后面加逗号if(i != str.length()-1)System.out.print(charArray[i]+",");elseSystem.out.println(charArray[i]);}System.out.println("将int值转换为String类型之后的结果:"+String.valueOf(12345));String str2 = "you are beautiful";System.out.println("将字符串转换成大写之后的结果:"+str2.toUpperCase());

③字符串的替换和去除空格操作:

        String str4 = "test";System.out.println("将test替换成Test的结果"+str4.replace("test", "Test"));String str5 = " J a v a S c r i p t  ";System.out.println("去除字符串两端空格后的结果:"+str5.trim());System.out.println("去除字符串所有空格后的结果:"+str5.replace(" ", ""));

④字符串的判断操作:

        String str6 = "String";String str7 = "Str";System.out.println("判断字符串是否以Str开头:"+str6.startsWith("Str"));System.out.println("判断字符串是否以ing结尾:"+str6.endsWith("ing"));System.out.println("判断字符串是否包含字符串tring:"+str6.contains("tring"));System.out.println("判断字符串是否为空:"+str6.isEmpty());System.out.println("判断两个字符串是否相等:"+str6.equals(str7));

⑤字符串的截取和分割:

        //   字符串截取操作String str8 = "羽毛球-篮球-乒乓球";System.out.println("从第5个字符截取到末尾的结果:"+str8.substring(4));System.out.println("从第5个字符截取到第6个字符的结果:"+str8.substring(4,6));//    字符串分割操作System.out.print("分割后的字符串数组的元素依次为:");String[] StringArray = str8.split("-"); // 将字符串转换为字符串数组for(int i = 0; i<StringArray.length; ++i){if(i != StringArray.length-1)System.out.print(StringArray[i]+",");elseSystem.out.print(StringArray[i]);}

二、StringBuffer类

为了便于对字符串的修改,在JDK中提供了一个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。

        StringBuffer strff = new StringBuffer("Hello");System.out.println("添加参数到StringBuffer对象:"+strff.append(" World"));System.out.println("在字符串中的某个位置插入字符串:"+strff.insert(5, "(你好)"));System.out.println("移除此序列指定位置的字符:"+strff.deleteCharAt(0));System.out.println("删除StringBuffer对象指定范围内的字符或字符串序 列:"+strff.delete(0, 4));System.out.println("在StringBuffer对象中替换指定的字符或字符串序 列:"+strff.replace(0, 4, "Bye"));System.out.println("修改指定位置index处的字符序列:"+strff.setCharAt(0, 'f'));System.out.println("返回StringBuffer缓冲区中的字符串:"+strff.toString());System.out.println("将字符串用反转形式取代:"+strff.reverse());/*append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符。*/

StringBuffer类和String类有很多相似之处,初学者使用时容易混淆。

1 、 String 类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。 StringBuffer 表示字符容器,其内容和长度都可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用 String 类即可,但是如果需要对字符串中的字符进行增删操作,则使用 StringBuffer 类。
2 、 String 类覆盖了 Object 类的 equals() 方法,而 StringBuffer 类没有覆盖 Object 类的 equals() 方法
3 、 String 类对象可以用操作符“ + ”进行连接,而 StringBuffer 类对象之间不能

三、System类

System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。

getProperties()方法

System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在

        // 获取当前系统的全部属性Properties property = System.getProperties();// 获取所有系统属性的key,返回Enumeration对象Enumeration propertyNames = property.propertyNames();while(propertyNames.hasMoreElements()) {// 获取系统属性的键String key = (String)propertyNames.nextElement();//  获取当前键key对应的值String value = System.getProperty(key);System.out.println(key + "————》"+value);}

②currentTimeMillis()方法

currentTimeMillis()方法返回一个long类型的值,该值表示当前时间与1970年1月1日0点0分0秒之间的时间差,单位是毫秒,习惯性地被称作时间戳。

        long startTime = System.currentTimeMillis(); // 循环开始的当前时间int sum = 0;for(int i = 0; i<1000000; ++i){sum += i;}long endTime = System.currentTimeMillis();  // 循环结束后的当前时间System.out.println("程序运行的时间为:"+(endTime-startTime)+"毫秒");

③arraycopy(Object src,int srcPos,Object dest,int destPos,int length)方法

arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:

src:表示源数组

dest:表示目标数组src

Pos:表示源数组中拷贝元素的起始位置dest

Pos:表示拷贝到目标数组的起始位置

length:表示拷贝元素的个数

     需要注意的是,在进行数组复制时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常。

        int[] fromArray = {101,102,103,104,105,106};   // 源数组int[] toArray  = {201,202,203,204,205,206,207};// 目标数组System.arraycopy(fromArray, 2, toArray, 3, 4);// 打印目标数组中的元素for(int i = 0; i<toArray.length; i++) {System.out.println(i+":"+toArray[i]);}

创建了两个数组fromArray和toArray,分别代表源数组和目标数组,当调用arraycopy()方法进行元素拷贝时,由于指定了从源数组中索引为2的元素开始拷贝,并且拷贝4个元素存放在目标数组中索引为3的位置,因此,在打印目标数组的元素时,程序首先打印的是数组toArray的前三个元素201、202、203,然后打印的是从fromArray中拷贝的四个元素。

四、Runtime类

Runtime类用于表示虚拟机运行时的状态,它用于封装JVM 虚拟机进程。每次使用 java 命令启动虚拟机都对应一个 Runtime 实例,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化。若想在程序中获得一个 Runtime 实例,只能通过以下方式:
   
由于 Runtime 类封装了虚拟机进程,因此,在程序中通常会通过该类的实例对象来获取当前虚拟机的相关信息。
        Runtime rt = Runtime.getRuntime();System.out.println("处理器的个数:"+rt.availableProcessors()+"个");System.out.println("空闲内存数量:"+rt.freeMemory()/1024/1024+"M");System.out.println("最大可用内存数量:"+rt.maxMemory()/1024/1024+"M");

通过“Runtime.getRuntime()”方式创建了一个Runtime的实例对象,并分别调用该对象的availableProcessors()方法、freeMemory()方法和maxMemory()方法,将当前虚拟机的处理器个数、空闲内存数和可用最大内存数的信息打印出来。


Runtime 类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令行窗口中输入dos命令同样的效果。

        Runtime rt = Runtime.getRuntime();  //  创建一个Runtime实例对象Process process = rt.exec("notepad.exe");// 得到表示进程的Process对象try {Thread.sleep(3000); // 程序休眠3秒} catch (InterruptedException e) {e.printStackTrace();} process.destroy();  // 杀掉进程

通过调用Process对象的destroy()方法,将打开的记事本关闭了。为了突出演示的效果,使用了Thread类的静态方法sleep(long millis)使程序休眠了3秒,因此,程序运行后,会看到打开的记事本在3秒后自动关闭了。

五、Math类

Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。Math类中有两个静态常量PI和E,分别代表数学常量π和e

        System.out.println("计算绝对值的结果:"+Math.abs(-1));System.out.println("求大于参数的最小整数:"+Math.ceil(5.6));System.out.println("求小于参数的最大整数:"+Math.floor(-4.2));System.out.println("对小数进行四舍五入后的结果:"+Math.round(-4.6));System.out.println("求两个数的较大值:"+Math.max(2.1, -2.1));System.out.println("求两个数的最小值:"+Math.min(2.1, -2.1));System.out.println("生成一个大于等于0.0小于1.0的随机值:"+Math.random());

Math类的常用方法进行了演示。从运行结果中可以看出每个方法的作用。需要注意的是,round()方法用于对某个小数进行四舍五入,此方法会将小数点后面的数字全部忽略,返回一个int值。而ceil()方法和floor()方法返回的都是double类型的数,这个数在数值上等于一个整数。

六、Random类

在JDK的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法

Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。

        Random r = new Random();    //  不传入种子// 随机产生10个【0,100】之间的整数for(int i = 0; i<10 ; i++){System.out.println(r.nextInt(100));}
        Random r = new Random(10);  //  传入种子//  随机产生10个【0,100】之间的整数for(int i = 0; i<10 ; i++){System.out.println(r.nextInt(100));}

相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数

表中列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.01.0之间double类型的值,nextFloat()方法返回的是0.01.0之间float类型的值,nextInt(int n)返回的是0(包括)和指定值n(不包括)之间的值。

七、包装类

在Java中,很多类的方法都需要接收引用类型的对象,此时就无法将一个基本数据类型的值传入。为了解决这样的问题,JDK中提供了一系列的包装类,通过这些包装类可以将基本数据类型的值包装为引用数据类型的对象。

包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念,其中装箱是指将基本数据类型的值转为引用数据类型,反之,拆箱是指将引用数据类型的对象转为基本数据类型

// 装箱:   int a = 20;Integer it = new Integer(a);System.out.println(it.toString());
/*装箱过程,在创建Integer对象时,将int类型的变量a作为参数传入,从而转为Integr类型。由于Object类是所有类的父类,因此,通过调用toString()方法,成功将Integer的值以字符串的形式打印出来。*/
//   拆箱:Integer it = new Integer(20);int sum = it.intValue();System.out.println(sum);
/*拆箱的过程,Integer对象通过调用intValue()方法,将Integer对象转为int类型,从而可以与int类型的变量sum进行正确打印。*/

Integer类除了具有Object类的所有方法外,还有一些特有的方法

在使用包装类时,需要注意以下几点:

• 包装类都重写了Object类中的toString()方法,以字符串的形式返回被包装的基本数据类型的值。

• 除了Character外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串s不能为null,而且字符串必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行时会报错。

• 除了Character外,包装类都有parseXXX(String s)的静态方法,将字符串转换为对应的基本类型的数据。参数s不能为null,而且同样必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行时会报错。

八、Date类

在JDK的java.util包中提供了一个Date类用于表示日期和时间。Date类中大部分构造方法都被声明为已过时,只有两个构造方法是建议使用的,一个是无参的构造方法Date(),用来创建当前日期时间的Date对象。另一个是接收一个long型参数date的构造方法Date(long date),用于创建指定时间的Date对象,其中date参数表示1970年1月1日0时0分0(称为历元)以来的毫秒数,即时间戳。

import java.util.Date;public class Test_Date {public static void main(String[] args) {Date date1 = new Date();        // 创建表示当前时间的Date对象Date date2 = new Date(96666661);// 创建表示时间戳的Date对象System.out.println(date1);System.out.println(date2);}}

九、Calendar类

Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分和秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后调用其相应的方法,具体示例如下:

实例一:import java.util.Calendar;public class Test_Calendar {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();calendar.set(2008, 7, 8);calendar.add(Calendar.DATE, 100);int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int date = calendar.get(Calendar.DATE);System.out.println("日期:"+year+"年"+month+"月"+date+"日");/*调用Calendar的set()方法将日期设置为2008年7月8号,然后调用add()方法在Calendar.Date字段上增加100,从打印结果可以看出,增加100天的日期为2008年10月16日。*/}
}
实例二:import java.util.Calendar;public class Test_Calender {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();// 获取表示当前时间的Calendar对象int year = calendar.get(Calendar.YEAR);// 获取当前年份int month = calendar.get(Calendar.MONTH)+1;// 获取当前月份int date = calendar.get(Calendar.DATE);// 获取当前日int hour = calendar.get(Calendar.HOUR);// 获取时int minute = calendar.get(Calendar.MINUTE);// 获取分int second = calendar.get(Calendar.SECOND);// 获取当前秒System.out.println("当前时间:"+year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒");/*调用Calendar的getInstance()方法创建一个代表默认时区内当前时间的Calendar对象。然后调用该对象的get(int field)方法,通过传入不同的常量字段值来分别得到日期、时间各个        字段的值,特别需要注意的是,获取的Calendar.MONTH字段值需要加1才表示当前时间的月份。*/}}

十、DateFormat类

如果要将Date对象表示的日期以指定的格式输出,例如输出中文格式的时间,就需要用到DateFormat类。DateFormat类专门用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象。DateFormat是抽象类,不能被直接实例化,但它提供了静态方法,通过这些方法可以获取DateFormat类的实例对象,并调用其它相应的方法进行操作。

表中列出了DateFormat类的四个静态方法,这四个方法都是用于获得DateFormat类的实例对象,每种方法返回的对象都具有不同的作用,它们可以分别对日期或者时间部分进行格式化。在DateFormat类中定义了四个常量值用于作为参数传递给这些方法,其中包括FULL、LONG、MEDIUM和SHORT。FULL常量用于表示完整格式,LONG常量用于表示长格式,MEDIUM常量用于表示普通格式,SHORT常量用于表示短格式。



public class Test_DateFormat {public static void main(String[] args) throws ParseException {Date date = new Date();// Full格式的日期格式器对象DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL);// Long格式的日期格式器对象DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG);// MEDIUM格式的日期/时间格式器对象DateFormat mediumFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);// SHORT格式的日期/时间格式器对象DateFormat shortFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);// 打印格式化的日期或者日期/时间System.out.println("当期日期的完整格式为:"+fullFormat.format(date));System.out.println("当期日期的长格式为:"+longFormat.format(date));System.out.println("当期日期的普通格式为:"+mediumFormat.format(date));System.out.println("当期日期的短格式为:"+shortFormat.format(date));/*演示了四种格式下时间和日期格式化输出的效果,其中调用getDateInstance()方法获得的实例对象用于对日期部分进行格式化,getDateTimeInstance()方法获得的实例对象可以对日期和时间部分进行格式化。*/}
}


 DateFormat中还提供了一个parse(String source)方法,能够将一个字符串解析成Date对象,但是它要求字符串必须符合日期/时间的格式要求,否则会抛出异常。

        DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);String str = "2021年11月28日";System.out.println(df.parse(str));/*  使用LONG样式常量创建了一个DateFormat对象,然后调用format()方法与它格式对应的时间字符串"2021年11月28日"解析成了Date对象。*/

十一、SimpleDateFormat类

JDK中提供了一个SimpleDateFormat类,该类是DateFormat类的子类。SimpleDateFormat类可以使用new关键字创建实例对象,它的构造方法接收一个格式字符串参数,表示日期格式模板。

import java.sql.Date;
import java.text.SimpleDateFormat;public class simpledateformat {@SuppressWarnings("deprecation")public static void main(String[] args) {//  创建一个SimpleDateFormat对象SimpleDateFormat sdf = new SimpleDateFormat("Gyyyy年MM月dd日:今天是yyyy年的第D天,E");// 按SimpleDateFormat对象的日期模板格式化Date对象System.out.println(sdf.format(new Date(0, 0, 0)));}
}

十二、JDK新特性——Switch语句支持字符串


public class Test_Switch {public static void main(String[] args) {String week = "Friday";switch(week){case "Monday":System.out.println("星期一");break;case "Tuesday":System.out.println("星期二");break;case "Wednesday":System.out.println("星期三");break;case "Thursday":System.out.println("星期四");break;case "Friday":System.out.println("星期五");break;case "Saturday":System.out.println("星期六");break;case "Sunday":System.out.println("星期天");break;default :System.out.println("输入有误!请重新输入:");break;}}}

Java程序设计——常用实用类相关推荐

  1. Java实用教程笔记 常用实用类

    常用实用类 8.1 String类 判断引用是否为同一变量 常量池vs非常量池(动态区) equals 输出对象为内存地址的方式 "==" 运算结果为ture/false的比较方式 ...

  2. 大学-Java课程-第八章 常用实用类

    第八章 常用实用类 8.1 String 类 8.1.1 构造 String 对象 8.1.2 String 对象的并置 8.1.3 String 类的常用方法 8.1.4 String 对象与基本数 ...

  3. java高级特性2_Java高级特性 第2节 java中常用的实用类(1)

    一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...

  4. 20175305张天钰《java程序设计》第七周学习总结

    <java程序设计>第七周学习总结 第八章 常用实用类 1.String类 1.String类不可以有子类.2.用户无法输出String对象的引用,输出的是字符序列 3.构造方法:Stri ...

  5. 20165318 2017-2018-2 《Java程序设计》第六周学习总结

    20165318 2017-2018-2 <Java程序设计>第六周学习总结 教材内容学习总结 第八章 常用实用类 1.String类 String类用来处理字符序列,在java.lang ...

  6. 20155204 2016-2017-2 《Java程序设计》第3周学习总结

    20155204 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 一个原始码中可以有多个类定义,但只能有一个公开类. 留心Scanner对于每一种类型的nex ...

  7. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...

     本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天, ...

  8. 2019-2020-3 《Java 程序设计》第三周知识总结

    2019-2020-3 <Java 程序设计>第三周知识总结 1.类的定义 语法格式如下(加[]表示可选项): [修饰符] class 类名 { 属性定义(声明) 方法定义(声明)} 2. ...

  9. 《JAVA程序设计》第七周学习总结

    教材学习内容总结 第八章 常用实用类 String类 1.String类不可以有子类. 2.用户无法输出String对象的引用,输出的是字符序列 3.构造方法:String s = new Strin ...

  10. 20155303 2016-2017-2 《Java程序设计》第六周学习总结

    20155303 2016-2017-2 <Java程序设计>第六周学习总结 课堂笔记 高效学习法推荐 看视频学习(2h)→ 以代码为中心看课本,思考运行结果并验证(3h)→ 课后作业验证 ...

最新文章

  1. HDU Problem 1272 小希的迷宫 【并查集】
  2. 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
  3. Android提醒:Dialog,Toast,Snackbar
  4. idea java 注释模板配置
  5. android被逼学习布局管理器
  6. Linux 中/etc/profile、~/.bash_profile 环境变量配置以及区别
  7. Python--上下文管理器学习(11.3)
  8. Shiro JSP 标签
  9. C++之epoll监听输入(替代select)
  10. 关于VS中Compile Symbol 使用方法
  11. 钉钉现身数博会:增长200% 年内要覆盖450万家企业组织
  12. 哪些应用场景在使用语音连麦
  13. 员工请假系统 php,员工请假管理系统(源代码+论文)
  14. 免费电子书籍--网址
  15. MATLAB编写m函数理解 y=f(g(x))*h(x)
  16. latex在参考文献表中不输出网址和doi
  17. 深入理解 OpenStack Neutron:VXLAN
  18. win10删除鼠标右键选项
  19. torch实现ESIM算法
  20. Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)...

热门文章

  1. 【svn】svn 项目地址修改
  2. 服务器操作系统的安装流程图,服务器操作系统的安装流程图
  3. 向我的数学启蒙老师献上一束献花
  4. vue3-admin商品管理后台项目(后台布局layout布局开发一)
  5. 手把手教你写LKM rookit! 之 杀不死的pidroot后门
  6. 信创“大比武”openGauss赛道总决赛入围名单公布
  7. 分支-15. 日K蜡烛图
  8. 汽车汽配行业S2B2B电子商务网站提升产业资源集中度,创新供应链金融服务
  9. [Linux][c/c++]多Makefile编译
  10. 科大星云诗社动态20210527