包装类的概述:是将基本数据类型封装到一个类中,包含属性和方法,方便对象操作。
包装类位于java.lang包中。
自动装箱和自动拆箱
自动装箱:基本数据类型自动地封装到与它相同类型的包中。
public class TestInteger {
public static void main(String[] args) {
//基本数据类型转换为包装类
//有Interger来进行操作
int a =21;
Integer i1 =new Integer(a);
Integer intvalue =new Integer(21);
System.out.println(i1);
System.out.println(intvalue);
}
}
自动拆箱:包装类对象自动转换为基本数据类型
//包装类转换基本数据类型
//包装类转换基本数据类型
Integer i = new Integer(25);
i = i.intValue();
.var会自动补其中的操作;
无处不在的字符串:
生活中的字符串:1.“欢迎进去Java世界”
2.“HelloWorld”
3.“教育改变生活”
使用String来存储对象
String类位于java.lang包中,具有丰富的方法
计算字符串的长度、比较字符串、连接字符串、提取字符串
char charAt(int index)
返回字符串中第index个字符。 boolean equals(String other)
如果字符串与other相等,返回true
boolean equalsIgnoreCase(String other)
如果字符串与other相等(忽略大小写),则返回true
int indexOf(String str) lastIndexOf(String str,int idx)
int length()
返回字符串的长度。 String replace(char oldChar,char newChar)
返回一个新串,它是通过用 newChar 替换此字符串中出现的所有oldChar 而生成的
boolean startsWith(String prefix)
如果字符串以prefix开始,则返回true
boolean endsWith(String prefix)
如果字符串以prefix结尾,则返回true
String substring(int beginIndex)
String substring(int beginIndex,int endIndex)
返回一个新字符串,该串包含从原始字符串beginIndex到串尾戒endIndex-1 的所有字符
String toLowerCase()
返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母
String toUpperCase()
返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母
String trim()
返回一个新字符串,该串删除了原始字符串头部和尾部的空格
equals判断字符串值相等,==判断字符串对象引用相等!
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println(s1 == s2);//true
System.out.println(s1 == s3);//false
System.out.println(s3 == s4);//false
String类的使用。 – 带参方法的定义和使用
▪ 需求说明: – 实现会员注册,要求用户名长度不小于3,密码长度不小于6,注册时两次
输入密码必须相同
public class Register {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("欢迎进入会员注册系统");
boolean flag = true;
while (flag) {
System.out.print("\n请输入用户名:");
String name = sc.next();
System.out.print("请输入密码:");
String pwd = sc.next();
System.out.print("请再次输入密码:");
String pwd2 = sc.next();
if (name.length() < 3 || pwd.length() < 6) {
System.out.print("用户名长度不能小于3,密码长度不能小于6!");
} else if (!pwd.equals(pwd2)) {
System.out.print("两次输入的密码不相同!");
} else if (name.length() >= 3 && pwd.length() >= 6 && pwd.equals(pwd2)) {
System.out.print("注册成功!请牢记用户名和密码!");
break;
}
}
}
}
字符串常用的提取方法
可以查看API来进行方法提取
需求说明: – 输入一个字符串,输入一个字符,判断该字符在该字符串中出现的次数
public class StringDemo{
public static void main (String []args){
//创建对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.next();
System.out.println("请输入要查找的字符:");
String s1 = sc.next();
//存放每个数组元素
String [] strings = new String[s.length()];
//计算每个字符出现的次数
int count = 0;
//把字符转换成数组
for (int i = 0; i <strings.length ; i++) {
strings[i] = s.substring(i,i+1);
}
//挨个字符进行查找
for (int i = 0; i <strings.length ; i++) {
if(strings[i].equals("爱")){
count++;
}
}
System.out.println("一共有:"+count+"爱");
}
}
StringBuffer:
String增强版
字符缓冲区,是一个容器。
StringBuffer声明
创建空StringBuffer对象
StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer(“aaa”);
sb.toString();
//转化为String类型 创建一个变量存储字符串
aaa
StringBuffer的使用
sb.append("**"); //追加
StringBuffer sb = new StringBuffer("青春无悔");
int num = 110;
StringBuffer sb1 = sb.append("我心永恒");
System.out.println(sb1);
StringBuffer sb2 = sb1.append("啊");
System.out.println(sb2);
StringBuffer sb3 =sb2.append(num);
System.out.println(sb3);
利用StringBuffer类的length()和insert ()方法实现需求
▪ 将一个数字字符串转换成逗号分隔的数字串,即从右边
开始每三个数字用逗号分隔
public class TestInsert {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一串数字: ");
String nums = input.next();
StringBuffer str=new StringBuffer(nums);
for(int i=str.length()-3;i>0;i=i-3){
str.insert(i,',');
}
System.out.print(str);
}
}
▪StringBuilder:可变字符序列、效率高、线程不安全
▪ StringBuffer:可变字符序列、效率低、线程安全
训练要点: – StringBuffer类的使用
– 方法的定义和使用
▪ 需求说明: – 登录验证通过后,显示批发商品信息;输入批发商品编号和数量,以
指定格式显示总金额
▪ 实现思路: – 1、创建类Goods
– 2、创建方法show()
– 3、创建方法change()
▪ 难点指导: – 格式化输出
public class Goods{
//定义商品
//创建一个数组将对象装进去
String [] goods = new String[]{"电风扇","洗衣机","电视机","冰箱","空调机"};
//定义商品价格,同上
double [] price = new double [] {124.23,4500.0,8800.9,5000.88,4456.0};
//用boolean类型来判断登录验证是否通过
public boolean login(){
bollean flag = false;
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = intput.next(0;
System.out.println("请输密码:");
String cipher = input.next();
//用equals是对字符串的比较
if(name.equals("张三") && cipher.equals("123456")){
System.out.println("登录成功");
flag = true;
}else{
System.out.println("用户密码不对,请重新输入");
flag = false;
}
}
return flag;
}
//、创建方法change(),格式化输出
public StringBuffer change(double d){
StringBuffer stringBuffer=new StringBuffer(String.valueOf(d));//把double类型的数组用valueOf包装成String类型
//index Of方法,查找指定内容,第一次出现索引值,如果没有则返回为-1,有则返回出现第一次出现的下标
for(int i=stringBuffer.indexOf(".")-3;i>0;i=i-3){//可以看到金额的显示形式,从第一此出现的位置减去3个位置的时候插入","所以这里的for循环开始从j=i-3开始,依次在后面的移动三个位置,让后进行循环输出。
stringBuffer.insert(i,',' );//insert方法在指定索引的位置进行插入
}
return stringBuffer;
}
//创建方法show()
public void show(){
System.out.println("****************欢迎进入商品批发城**************");
System.out.println("\t\t编号\t商品\t价格\t\t");
for(int i=0;i<goods.length;i++){
System.out.print("\t\t"+(i+1)+"\t");
System.out.print(goods[i]+"\t");
System.out.print(change(price[i]));
System.out.println(" ");
}
}
//创建测试类进行操作
public class TestDemo{
public static void main(String[] args) {
Goods s = new Goods();
String name;
double money = 0;
double num;
s.login();
s.show();
Scanner input = new Scanner(System.in);
System.out.print("请输入您批发的商品编号:");
int hao = input.nextInt();
switch(hao){
case 1:
name="电风扇";
money=124.23;
break;
case 2:
name="洗衣机";
money=4500.0;
break;
case 3:
name="电视机";
money=8800.9;
break;
case 4:
name="冰箱";
money=5000.88;
break;
case 5:
name="空调";
money=4456.0;
break;
}
System.out.println("请输入批发的数量:");
int shu = input.nextInt();
num=money*shu;
System.out.println("您需要付款"+s.change(num));
}
}
}
Date
表示日期和时间,代表一个特定的时间,精确毫秒
Date类的常用方法
getTime()
setTime( long time )
DateFormat
日期格式化的类
SimpleDateformat
是一个具体的类,用于区域设置敏感的方式格式和解释日期
Calender
抽象类,用于设置日期和联合获取时间/时间数据的特定部分
public class DateDemo1{
public static void main(String[] args){
//public Date(),分配一个date对象,并初始化,以便分配的时间精确
//创建对象,以此来获取电脑中的时间
Date d1 = new Date();
System.out.println(d1);
//public date(lone date)分配一个date对象并将初始化为表示从标准指定到毫秒数
long date = 1000*30*60;
Date d2 = new Date(date);
System.out.println(d2);
//创建日期
Date 的= new Date();
//public long getTime() 获取日期对象,从1970年1月1日开始到现在的毫秒数;
System.out.println(d.getTime());
System.out.println(d.getTime()*1.0/1000/60/60+"年")
//public void steTime(long time)设置时间,给的是毫秒数
long time = System.currentTimeMillis();
d.setTime(time);
System.out.println(d);
}
}
有一组固定的常量组成的类型
只有取特定值的一个
使用Enum关键字
所有枚举类型隐约继承 Java.lang.enum包
需求说明
为JavaSE课程三个单元定义枚举:U1,U2,U3分别表示初级,中级,高级
编程输出每个单元的学习目标
创建course类来存储三个单元
//创建Course来存储三个单元
public enum Course {
U1,U2,U3 // 代表初级、中级、高级
}
创建测试类
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入1,2,3");
int num = sc.next();
//给三个单元定义一个统一的变量
Course u;
//给三个单元赋值
if(num == 1){
u = Course.U1;
}else if(num == 2){
u = Course.U2;
]else {
u = Course.U3;
}
//利用Switch结构来判断里面的值,来执行相应操作
Switch(u){
case U1;
System.out.println("初级课程");
break;
case U2;
System.out.println("中级课程");
break;
case U3;
System.out.println("高级课程");
break;
default:
break;
}
}
}