JAVA基础-常用类(DateStringBufferStringBuilderMathArrays和包装类)

Posted 不愿透露姓名的王建森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA基础-常用类(DateStringBufferStringBuilderMathArrays和包装类)相关的知识,希望对你有一定的参考价值。

需要掌握的知识点:

  1. 用于操作字符串的String类和StringBuffer、StringBuilder类
  2. 用于操作日期的Date类
  3. 用于进行常见数学运算的Math类
  4. 用于数组操作的Arrays类
  5. 基本数据类型的封装:8个包装类

java.lang 是个系统的基础类,比如String,Math,Integer,Thread等,提供一些常用的功能
java.io 是所有输入输出有关的类,比如文件操作等
java.net 是与网络有关的类,比如URL,URLConnection等
java.util 是系统辅助类,特别是集合类,Collection,List,Map等
java.sql 是数据库操作类,Connection,Statement,ResultSet等

String类

我们用java.lang包下的String类来存储并处理字符串。
字符串是引用类型,通过new来创建对象

String str1 = new String("abc");

还可以像一般的引用类型一样

String str2 = "def";

部分相关的函数:

返回值 /方法名/ 参数 说 明
int length() 获取字符串的长度
boolean equals(Object anObject) 将此字符串与指定的对象比
String toUpperCase() 将字符串中的所有字符都转换为大写
String toLowerCase() 将字符串中的所有字符都转换为小写
String concat(String str) 将指定字符串连接到此字符串的结尾
int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引
boolean startsWith(String prefix) 判断字符串是否以指定的字符开头
boolean endsWith(String prefix) 判断字符串是否以指定的字符结尾
String substring(int beginIndex) 提取从指定位置索引(包含该位置)开始的字符串部分
String substring(int beginIndex, int endIndex) 提取从beginindex(包含)到endindex(不包含)之间的字符串部分
String str2="zhangsan01";
String str3="LISI";
String str4=" lisi";
//长度
System.out.println("返回字符串长度:"+str2.length());
//字符拼接
System.out.println("字符串拼接:"+str2.concat("李四").concat("wangwu"));
System.out.println("字符串拼接"+str2+"lisi"+"dd");
//字符判断
System.out.println("比较两个字符串 内容相等为True 否则为false:"+str2.equals("zhangsan"));
System.out.println("判断是否为空 空的话返回True 否则false:"+str2.isEmpty());
System.out.println("比较字符串忽略大小写:"+str2.equalsIgnoreCase("ZHANGSAN01"));
System.out.println("按字典顺序进行比较 返回的整数  0代表相同 排在之前为负数 否则为正数"+str4.compareTo(str3));
System.out.println("按字典顺序进行比较 忽略大小写"+str4.compareToIgnoreCase(str2));
System.out.println("判断是否以字符开头:"+str2.startsWith("zhang"));
System.out.println("判断是否以字符结尾:"+str2.endsWith("01"));
//字符串转换
System.out.println("把字符串中的字符转换成大写:"+str2.toUpperCase());
System.out.println("把字符串中的字符转换成小写:"+str3.toLowerCase());
System.out.println("讲字符串转换成字节数组"+str2.getBytes());
System.out.println("valueof方法 基本数据类型转换成字符串"+str2.valueOf(true).concat("ddd"));
//字符串返回字符内容或索引
System.out.println("根据索引 返回字符串中该索引的内容:"+str2.charAt(0));
System.out.println("根据传入的字符串返回他的索引值"+str4.indexOf("l"));
//字符串去掉前空白和后空白
System.out.println(str4);
System.out.println("去掉字符串前空白和后空白:"+str4.trim());
//字符串的截取 以1索引值开始截取到结尾 包含1
System.out.println("字符串截取"+str2.substring(1));
//以1索引值开始截取包含1索引值  截取到 4索引值位置 不包含4索引值
System.out.println("字符串截取 开始索引包含 结束索引不包含"+str2.substring(1,4));
//字符串的分割
String str5="长亭外,古道边,芳草碧连天";
String []arrayStr5=str5.split(",");
//for增强 用于遍历用    把数组中所有元素打印一个遍就叫遍历
//for(数组类型  随便起的名字:数组名){输出起的那个名字}
for (String string : arrayStr5) {
    System.out.println(string);
}
System.out.println(arrayStr5[0]);

//“”引起来的内容就是字符串  只要是字符串就能调用字符串中的方法
System.out.println("zhangsan".equals("ddd"));

StringBuffer类

实际是一个可以改变长度的String

//声明一
StringBuffer sb=new StringBuffer();
//声明二
StringBuffer sb2=new StringBuffer("wangwu");
//追加
sb.append("张三");
sb.append("李四");
System.out.println(sb);
sb2.append("222");
System.out.println(sb2);
//删除
System.out.println("开始执行删除");
//删除从开始索引  包含到结束索引 不包含
sb.delete(1, 2);
System.out.println(sb);
//插入 插入到该索引位置 第一个参数索引值 第二参数 内容
sb.insert(1, 222);
System.out.println(sb);
//修改 从开始索引  包含到结束索引 不包含
sb.replace(1,2, "333");
System.out.println(sb);

//长度
System.out.println("长度"+sb.length());
//翻转
System.out.println("字符串反转"+sb.reverse());
//转换成String 
System.out.println(sb.toString());

String s1="zhangsan";
//字符串拼接并不能改变字符串本身
System.out.println(s1.concat("dd"));
System.out.println(s1);

StringBuilder类

和StringBuffer几乎类似,区别是一个线程安全的,一个线程不安全的。

小总结一下:

  • String类
    长度不可变的字符串
    进行拼接操作时,实际上是创建了一个新的字符串来代替原来的老字符串,所以“字符串追加操作”效率最低

  • StringBuffer类
    线程安全、长度可变的字符串
    多线程操作时使用较多,进行“字符串追加操作”时效率较高

  • StringBuilder类
    线程不安全、长度可变的字符串
    在单线程操中,进行“字符串追加操作”时效率最高

Date类

//获取当前时间 使用比较多
Date d1=new Date();
System.out.println(d1);


Date d2=new Date(10000000);
System.out.println(d2);

System.out.println(d1.getTime());
System.out.println(d2.getTime());
System.out.println(d2.toString());
//时间格式转换类
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");

System.out.println(simpleDateFormat.format(d1));

Math类

System.out.println(Math.PI);
//二个数最小值
System.out.println(Math.min(22,11));
//二个数最大值
System.out.println(Math.max(22, 33));
//四舍五入
System.out.println(Math.round(33.5));
//绝对值
System.out.println(Math.abs(33.7));
//生成随机数0.0-1.0之间的小数
//0-10之间数
System.out.println((int)(Math.random()*10));


包装类

为了实现一些复杂的数据操作,Java在8种基本数据类型的基础上又定义了一一对应的包装类

基本数据类型 包装类
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
  • 装箱:将基本数据类型包装成包装类的实例

    //直接创建
    Integer i = new Integer(12);
    
    //使用自动装箱,将基本数据类型数据装入包装类中
    Double d = 12.3;
    
  • 拆箱:将包装类对象中包装的基本类型数据取出

    //调用intValue方法获取包装类对象 i 中的值
    int j = i.intValue();
    //使用自动拆箱,将包装类中的数据取出
    double e = d;
    
Integer i1=14;//装箱 

int a=i1.intValue();//拆箱

//可以把字符串转换成 int类型
int b=i1.parseInt("1111");
System.out.println(b+22);
long l1=i1.longValue();

Integer ii1=i1.valueOf(111);

Timer类和TimerTask类

package com.kkba;

import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;



//Timer调用线程调度的类   TimerTask 供我们书写线程中操作的类 定时操作
public class MyTask  extends TimerTask{

	@Override
	public void run() {
		SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(dateFormat.format(new Date()));
	}
    
	public static void main(String[] args) {
		Timer t1=new Timer();
		MyTask myTask=new MyTask();
		//第二个参数 毫秒为单位 1000毫秒为1秒
		//多少毫秒后 调用线程中内容
//		t1.schedule(myTask, 10000);
		//1秒后执行线程中内容  每2秒后重复执行
		t1.schedule(myTask, 1000,2000);
	}
	
}













以上是关于JAVA基础-常用类(DateStringBufferStringBuilderMathArrays和包装类)的主要内容,如果未能解决你的问题,请参考以下文章

java基础09- 常用类

java基础-Integer类常用方法介绍

JAVA基础-常用类(DateStringBufferStringBuilderMathArrays和包装类)

Java基础—— 常用类

java基础(15)常用类

《Java实战常用类》第1节:包装类