(1)String类的常用方法 (2)StringBuilder类和StringBuffer类 (3)日期相关的类 (4)集合框架
1.String类的常用方法(重中之重、练熟、记住)
2.StringBuilder类和StringBuffer类(重点)
如:
String str1 = “ab”;
String str2 = “abc”;
String str3 = “abcd”;
… …
题:/使用equals方法模拟用户登录的过程:提示用户输入用户名和密码信息
解题提示:
若输入"admin"和"123456"则提示"登录成功",否则提示"用户名或密码错误",
当输入3次依然失败时则提示"账户已冻结,请联系客服人员"/
package StringTWO;
import java.util.Scanner;
public class admin {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int i=3;i>0;i--){
System.out.println("请输入用户名和密码,一个空格隔开:");
String username = sc.next();
String pwd = sc.next();
if ("admin".equals(username) && "12345".equals(pwd)) {
System.out.println("登录成功,欢迎使用》》》");
break;
} else {
if (i==1){
System.out.println("账户已冻结,请联系客服人员");
break;
}else {
System.out.println("用户名或者密码错误,请重新输入》》》");
}
}
}
}
}
题2:/使用两种方式实现将字符"12345"转换为整数12345并打印/
package StringTWO;
public class Change {
public static void main(String[] args) {
int res=Integer.parseInt("12345");
System.out.println("Integer.parseInt第一种转换方式:"+res);
System.out.println("--------------------------");
String it=new String("12345");
int res1=0;
for (int i=0;i<it.length();i++){
res1=res*10+(it.charAt(i)-'0');
}
System.out.println("第二种转换方式:res1=res*10+(it.charAt(i)-'0'):"+res1);
}
}
题三/l练习.charAt()/
package StringTWO;
public class StringCharATest {
public static void main(String[] args) {
String str=new String("hello shimmer tomorrow is better");
for (int i=0;i<str.length();i++){
System.out.println("打印字符串第"+i+"位的内容:"+str.charAt(i));
}
}
}
使用subString()可以截取字符串:
package StringTWO;
public class StringsubstringTest {
public static void main(String[] args) {
// 构造String类型的对象
// 创建两个个对象
String str1=new String("happy everyday,work harder everyday");
//创建一个对象
String str2="happy everyday,work harder everyday";
// 调用成员方法获取字符串的一部分
// substring的使用取值,取左不取右,起始位置都有
String str3=str1.substring(5,10);
System.out.println("str3:"+str3);
// 只有开始的位置
String str4=str1.substring(10);
System.out.println("str4:"+str4);
System.out.println("--------------------");
}
}
2.1 基本概念
由于String类型描述的字符串内容是个常量不可更改,当程序中出现大量类似的字符串时需要单独存放从而浪费内存空间,若希望使用一块内存空间进行存储并且可以修改字符串内容,则应该使用StringBuilder类和StringBuffer类。
其中StringBuffer类从jdk1.0开始存在,该类支持线程安全,因此访问的效率比较低
其中StringBuilder类从jdk1.5开始存在,该类不支持线程安全,访问的效率比较高
2.2 常用的方法(练熟、记住)
补充1:
str1.deleteCharAt(7);删除指定位置的单个字符;
方法应用:
package StringTWO;
import java.util.Locale;
//由于由于String类型描述的字符串内容是个常量不可更改,
// 当程序中出现大量类似的字符串时需要单独存放从而浪费内存空间
//若希望使用一块内存空间进行存储并且可以修改字符串内容,
// 则应该使用StringBuilder类和StringBuffer类。
public class StringBuilderTest {
public static void main(String[] args) {
//StringBuilder 可变数据类型
// 构造对象
StringBuilder str=new StringBuilder("hello");
System.out.println("str="+str);
//capacity等于16加上字符长度
System.out.println("容量:"+str.capacity());//21
System.out.println("长度:"+str.length());//5
System.out.println("----------------------");
// 全变大写toUpperCase,调的是引用,所以原数据不变
String str2 ="world";
String str3=str2.toUpperCase();
System.out.println("str2:"+str2);//world
System.out.println("str3:"+str3);//WORLD
// 2:调用成员方法实现插入操作
StringBuilder str1=new StringBuilder("shimmer");
// 指定插入的位置跟字符
StringBuilder ss=str1.insert(0,"like you !");
System.out.println("ss:"+ss);//like you !shimmer
System.out.println("str1:"+str1);//like you !shimmer
// 中间位置插入
str1.insert(5,"like you !");
System.out.println("str1:"+str1);//like like you !you !shimmer
// 向末尾插入
str1.insert(str1.length(),"zhuzhu");//str1:like like you !you !shimmerzhuzhu
System.out.println("str1:"+str1);
// 删除,取左不取右只能指明下标
str1.delete(0,16);
System.out.println("str1:"+str1);//str1:ou !shimmerzhuzhu
str1.replace(0,5,"hello");
System.out.println("str1:"+str1);//str1:hellohimmerzhuzhu
str1.reverse();
System.out.println(str1);//uhzuhzremmiholleh
}
}
3.日期相关的类(查手册会用即可)
3.1 Date类
(1)基本概念
java.util.Date类用于描述特定的瞬间,可以精确到毫秒。
(2)常用的方法
package StringTWO;
import java.util.Date;
public class DateTest {
// 标准时间1970年1月1日
// 3:调用成员方法,用于获取调用对象d1表示时间的距离标准时间的毫秒数
public static void main(String[] args) {
// 1:使用无参的方式构造对象并且打印,1秒=1000毫秒
Date dat= new Date();
System.out.println("dat:"+dat);//dat:Sat Apr 24 11:10:03 CST 2021
// 2:使用指定参数的毫秒数来构造对象并打印
Date dat1= new Date(1000);
System.out.println("dat1"+dat1);//dat1Thu Jan 01 08:00:01 CST 1970
// 3:调用成员方法,用于获取调用对象d1表示时间的距离标准时间的毫秒数
long msec= dat.getTime();
System.out.println("当前时间距离1970年1月1日差了"+msec+"毫秒");//当前时间距离1970年1月1日差了1619233843011毫秒
//4:设置调用对象表示的时间为距离标准时间2秒的时间点
dat.setTime(2000);
System.out.println("d1="+dat);//d1=Thu Jan 01 08:00:02 CST 1970
}
}
Date st=new Date(2021-1900,4-1,21,8,8,8);
根据上面的图片,想要得到2021年4月21日,年份必须减去1900,月份需要减1
3.2 SimpleDateFormat类
(1)基本概念
java.text.SimpleDateFormat类主要用于实现日期和文本之间的相关转换。
(2)常用的方法
package StringTWO;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateformatTest {
public static void main(String[] args) {
// 1:构造Date类型的对象
Date date=new Date();
System.out.println("date:"+date);//date:Sat Apr 24 11:39:18 CST 2021
// 2:构造SimpleDateFormat类型的对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH-mm-ss");
// 3:实现Date类型转String类型并打印,format
String change1=sdf.format(date);
System.out.println("Date类型转String类型时间打印:"+change1);//Date类型转String类型时间打印:2021年04月24日 11-39-18
// 4:实现String类型向date类型的转换并打印,parse
// Date change2=date.parse(sdf);
}
}
3.3 Calendar类
(1)基本概念
java.util.Calendar类用于取代Date类来描述年月日时分秒的特定瞬间。
(2)常用的方法
2.2调用set设置年月日时分秒
cld.set(2021,4-1,21,8,8,8);
月份必须减一才能得到自己想要的哪个月份因为他是从零下标开始计算的
package StringTWO;
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class CalendarTest {
public static void main(String[] args) {
//1:使用原始的方法来构造指定的年月日时分秒
Date st=new Date(2021-1900,4-1,21,8,8,8);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String dd= sdf.format(st);
System.out.println("转换成俺们中国人能看懂的时间形式:"+dd);//转换成俺们中国人能看懂的时间形式:2021-04-21 08-08-08
// 2:使用替代方式构造指定的年月日时分秒的瞬间
// 2.1:调用静态方法得到Calendar类型的引用,getInstance
Calendar cld=Calendar.getInstance();
// 2.2调用set设置年月日时分秒
cld.set(2021,4-1,21,8,8,8);
// 2.3调用getTime方法将Calender类型转换为Date类型
Date d2=cld.getTime();//转换
// 2.4调整格式并打印
System.out.println("Calender转换后的时间输出:"+sdf.format(d2));//转换成俺们中国人能看懂的时间形式:2021-04-21 08-08-08
}
}
知识点扩展:
1:学习看源码:
- 注释部分不需要看
- 读源码的同时记住它里面的信息
Pycharm和IntellJ IDEA通用方法:按住Ctrl键–》移动鼠标–》点击自己需要查看的函数功能应用方法:
比如:下面这个就是我按住Ctrl+鼠标左键点击StringBuilder 查看StringBuilder的源码,查看到了,他的容量只有16个字符。这就是我们读取到的信息
2:StringBuilder与StringBuffer的部分区别:
- 这两个函数涉及到了线程安全问题,StringBuffer线程安全,但是效率低,Buffer(缓冲)的意思,利用缓冲来提高安全性。StringBuilder线程不安全,但是效率高。
- 他们两个都是16个大小,但是都存在动态扩容,扩容每括一次都加16个容量的大小
3:Java数组一定确定大小不能改变
沿途有风景,背后亦有阳光,加油!!!
一步一步提升,稳赢!!!
活在这个世界上本来就有不低的成本和门槛!!!