需要掌握的知识点:
- 用于操作字符串的String类和StringBuffer、StringBuilder类
- 用于操作日期的Date类
- 用于进行常见数学运算的Math类
- 用于数组操作的Arrays类
- 基本数据类型的封装: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);
}
}