常用类
字符串
-
字符串是我们编程最常用的一种类型,远远高于所有的基本数据类型。特别是针对于输入输出,用户在输入或者接受输出的时候是意识不到数据类型的,那么他输入的所有东西和接收到的所有输出,其实都应该看成是字符串。
-
Java当中有多个专门用来处理字符串的类,String只是其中一种。
-
String类是经过专门设计的,它是具有引用数据类型的本质,但是使用上又可以像基本数据类型一样直接赋值。
-
1、String的常量对象是预加载的,并且每个常量对象被放在一个叫做“字符串常量池”的地方;—提升了字符串常量使用的效率
-
2、String对象的内容不可变;所有的改变其实都是产生了一个新的String对象;—降低了字符串使用的性能
Java当中还设计了StringBuilder\StringBuffer这两个同样表示字符串的类的原因。 -
3、Java为String设计了大量的API方法,可以帮助我们完成各种各样的功能,掌握得越多越熟练越好。
1、String当中与数组有关的方法
char[] array = str.toCharArray();// 将字符串中的字符取出来,以char[]的形式返回
int length = str.length();// 获取字符串的长度
char c = str.charAt(1);// 获取字符串中第几个位置是什么字符,下标是从0开始
int index = str.indexOf(‘l’);// 获取某个字符在字符串当中第一次出现的下标位置,如果没有返回-1
index = str.lastIndexOf(‘l’);// 获取某个字符在字符串当中最后一次出现的下标位置
// 2、String当中与字符串内容相关的方法
boolean flag = str.equals("hello");// 判断字符串内容是否相等
flag = str.equalsIgnoreCase("HeLlo");// 判断字符串内容在忽略大小写的情况下是否相等
int value = str.compareTo("hello");// 判断字符串的大小差值,按字典顺序(先比较第一对儿不同字符的差值,如果所有字符都一样,再比较长度)
value = str.compareToIgnoreCase("HellO");// 判断字符串之间忽略大小写的差值
str = str.toLowerCase();// 把字符串变全小写
str = str.toUpperCase();// 把字符串变全大写
flag = str.startsWith("WO");// 判断字符串以什么开头
flag = str.endsWith("LD");// 判断字符串以什么结尾
// 3、String当中的特有的方法
// 3-1、trim()----去掉一个字符串当中的前后空格!
str = " hello world ";
str = str.trim();
// 3-2、subString()----在字符串当中根据下标截取子串
str = "helloworld";
// str = str.substring(4);//从指定下标截取到最后,包含指定下标
str = str.substring(4, 6);// 从指定开始下标截取到指定结束下标,前闭后开
// 3-3、replace()---字符串内容替换
str = "hellowrold";
str = str.replace('l', 'f');// 把指定字符替换成新字符
str = str.replace("f", "fuckyou");// 把指定子字符串替换成另一个字符串
str = str.replaceAll("fuckyou", "l");// replaceAll功能相当于是把指定子字符串替换成另一个,但是它支持“正则表达式”!
// 3-4、split()---拆分字符串
String date = "hello?world?byebye";
String[] strArray = date.split("[?]");// 根据指定的分隔符,对字符串进行拆分,返回字符串数组。它也支持“正则表达式”!
System.out.println(strArray[0]);
// 3-5、matches()---判断字符串是否满足正则表达式
// String number = JOptionPane.showInputDialog("请输入您要拨打的电话号码:");//输入对话框
// int choice = JOptionPane.showConfirmDialog(null, "你真的是男生吗?");//确认对话框
// JOptionPane.showMessageDialog(null, "返回的是:" + choice);//消息对话框
// if(number.matches("8320([0-9]{4}|11[09]|120)")) {
// JOptionPane.showMessageDialog(null, "你拨打的是电子科技大学的号码。");
// }else {
// JOptionPane.showMessageDialog(null, "不认识你要拨打的号码");
// }
// String input = JOptionPane.showInputDialog("请输入你要存款的金额:");
//
// if(input.matches("(200|1[0-9]{2}|[1-9][0-9]?)00")) {
// JOptionPane.showMessageDialog(null, "输入金额有效,马上准备为您服务");
// }else {
// JOptionPane.showMessageDialog(null, "您输入的金额格式不对,只能输入20000及以内的百元整钞。");
// }
// String input = JOptionPane.showInputDialog("请输入你的IP地址首位:");
//
// if (input.matches("([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])")) {
// JOptionPane.showMessageDialog(null, "输入地址有效,马上准备为您服务");
// } else {
// JOptionPane.showMessageDialog(null, "您输入的地址格式不对,只能输入0-255。");
// }
StringBuffer类与StringBuilder 类
/*
* StringBuffer与StringBuilder 是专门用来解决
* 大量进行String的拼接而导致的产生很多String对象的问题。
*
* 首先出现的是StringBuffer,JDK1.0即提出
*/
//StringBuffer与String没有继承关系,所以StringBuffer不能向String
//一样用“”常量直接赋值。“”常量是String类型!!!
// StringBuffer sb = “hello”;
StringBuffer sb = new StringBuffer(“hello”);
+号做字符串拼接,只支持String,不支持StringBuffer
// sb = sb + "world";
sb.append("world");
sb.insert(5, " ");
System.out.println(sb);
StringBuffer提供的方法不如String丰富,主要的作用就是做拼接
//而它拼接的特点就是不产生新对象,直接是在原对象身上做改变。
StringBuffer sb0 = new StringBuffer("ByeBye");
StringBuffer sb1 = sb0;
sb0.append(", World!");
System.out.println(sb0);
System.out.println(sb1);
- StringBuilder是一个StringBuffer的补充类,两者的作用与提供方法都是一模一样的,
* 都是用来替代String,完成内容可变的字符串拼接。StringBuilder出现在JDK1.5
*
* 两者的区别是:StringBuffer是线程同步的,StringBuilder是线程不同步的。
* 所谓同步,是指线程安全性的实现手段。
* 同步表示线程安全,不同步表示线程不安全;同步会导致运行效率低,不同步会导致运行效率高。
*/
时间类
-
计算机保存时间的本质是用的什么数据类型?
-
时间在计算机当中是以整数的形式存在的,存放的是当前时间距离时间原点过了多少毫秒。
*///本方法是专门用来获取当前时间毫秒数的
//我们可以使用它来获取一段代码的执行时间。long begin = System.currentTimeMillis(); int num = 0; for(int i = 0; i < 1000; i++) { System.out.println(++num); } long end = System.currentTimeMillis(); System.out.println(end - begin); * 虽然时间在本质上是整数,但是由于作为整数无法方便快捷地操作和阅读时间日期信息, * 所以在Java当中还是提供了类来封装它。 */ Date date = new Date();//直接获取到当前的时间日期对象---这是用得最多的 Date past = new Date(12346579846L);//根据指定的毫秒数构造Date对象 ---- 使用频率极低 //现在对于Date最大的使用,就是配合SimpleDateFormat的类,对日期对象进行自定义格式化输出 SimpleDateFormat sdf = new SimpleDateFormat("yy年MM月dd日 HH:mm:ss E D"); String msg = sdf.format(date);
-
/如果要设置指定时间日期,请使用Calendar这个类
Calendar cal = Calendar.getInstance();//无需我们自己去产生子类对象,父类Calendar提供一个getInstance 方法直接返回给我们一个公历对象
cal.set(year, month, date);
past = cal.getTime();
msg = sdf.format(past);
System.out.println(msg);
}
包装类
/*
* 包装类:包装类是Java专门给每种基本数据类型设计的对应的引用数据类型。
* byte short int long float double char boolean
* Byte Short Integer Long Float Double Character Boolean
*
* 每种包装类,都是对基本数据类型的封装;基本数据类型只能装数据,包装类除了能装数据,还提供方法可以操作这些数据。
* 另外,有了包装类,基本数据类型就可以和引用数据类进行转换。包装类是这种转换的桥梁。
*/
//1、基本数据类型转包装类对象
// int i = 100;
// Integer in = new Integer(i);//直接调用带参构造
// in = i;//这是JDK1.5以后提供的语法糖,其实它并不是直接赋值,而是由VM帮你new了Integer构造。
// System.out.println(in);
//2、包装类对象转换为String
// Integer in = 200;
// String str = in.toString();
// System.out.println(str);
//3、String转int
// String str = "300";
// int i = Integer.parseInt(str);
// System.out.println(i);
//4、int转String
// int i = 400;
// String str = Integer.toString(i);
// String str0 = i + "";
// System.out.println(str);
//5、String 转 Integer
// String str = "500";
// Integer in = new Integer(str);
// System.out.println(in);
//6、Integer 转 int
Integer in = 600;
int i = in.intValue();
int i2 = in;//这是JDK1.5以后提供的语法糖,其实它并不是直接赋值,而是由VM帮你调用了intValue方法。
System.out.println(i);