Java带你去看流浪世界!(十六)

实用类

1.能够定义并使用枚举类型

(引用数据类型:数组,类(String),接口,枚举)

switch支持int String枚举(enum)

public class Student{
    private String name;
    private int age;
    private String gender;
    
    public void setAge(int age){
        
        if(age < 0 || age > 100){
            syso("非法输入");
            this.age = 60;
        }else{
            this.age = age;
        }
        
        if(gender.equals("男") || gender.equals("女")){
            this.gender = gender;
        }else{
            syso(xxx)
        }
    }
}

public class Test{
    main(){
        Student stu = new Student();
        //stu.age = -1000;(采用封装解决)  为了解决不合理赋值
        stu.gender = "呵呵"//男  女
    }
}
枚举指由一组固定的常量组成的类型

在[数学](https://baike.baidu.com/item/%E6%95%B0%E5%AD%A6/107037)和[计算机科学](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6/9132)理论中,一个集的**枚举**是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。
[Modifier] enum enumName{
    enumContantName1[,enumContantName2...[;]]
}
//枚举是类型,数据中间是有逗号","隔开
public enum Genders{
    //常量 static final(修饰符)
    其实这两个常量是两个对象
    MALE("男",0),
    FEMALE("女",1);
}
//枚举写法
public Genders sex;

public class Student{
    
}
//在很多场景下,我们需要其他开发者,在调用我们的某些方法时,只能传递某几个固定值
//那么就需要枚举
Strdent stu = new Student();
stu.sex = Genders.Male;
stu.gender(gender.male);

枚举的特点

类型安全 , 枚举中必须是私有构造private,不能为其他

易于输入

代码清晰

2.掌握包装类及装箱,拆箱的概念

1.集合泛型要求数据类型必须是包装类型

2.基本数据类型没有函数,所以当你需要对基本数据类型进行函数操作时,那么可以使用对应的包装类型。

包装类都是在java.lang包中。
在这里插入图片描述

		byte 			short		int 			long		float		double
包装类型的常用Api

1.包装类型的创建(了解)

main(){
    //给构造传输一个对应的基本数据类型值
   new Integer(value)//Inetger interger = new Integer(10);
       interget.xxxxx
   new Integer("10");//Inetger interger = new integer("10");
    	syso(integer)
   //除了输入ture为正确为,其他的都是fales
   new Boolean(ture);//Boolenan boolean = new Boolenan(ture);
}

2.保障类型转换(直接利用函数将基本数据类型值,转换为包装类型值)了解

main(){
    //可以通过静态函数,valueOf将基本数据类型值,转换为包装类型
    Integer.valueOf(10);//Integer valueOf = Integer.valueOf(10);
    Character.valueOf('A');//Character valueOf = Character.valueOf('A');
}

3.包装类型转换(了解)

Integer integer = Integer.valueOf(10);
//利用xxxValue() 可以将保障类型转换为对应的基本数据类型
int intValue = integer.intValue();

4.字符串转换为基本数据类型/包装类型(我们在网络数据传输中,你的数据表层会转换为字符串,服务器在接受时,就是一些字符串而已,但是你也知道字符串对于有些数据的操控并不是太方便,所以需要进行转换)

main(){
    String value = "10";
    //可以将字符串转换为对应的基本数据类型
    int parseInt = Integer.parseInt(value);
    //可以将字符串转换为对应的包装类型
    Integer valueOf = Integer.ValueOf(value);//------------------死记硬背
}

5.基本/包装类型----->字符串

main(){
    int a = 10;
    //凡是与字符串用+号拼接的都成为了字符串
    String b = a + "";
    //将基本数据类型转换为字符串
    String string = Integer.toString(a);
    //将包装类型转换为字符串
    Integer c = Integer.valueOf(a);
    String string = c.toString();//----------------------死记硬背
}
拆箱和装箱
拆箱:包装类型转换为基本数据类型
装箱:基本数据类型转换为包装类型

JDK5之后,java支持了自动拆箱和装箱

Integer a = 10;//装箱
int b = a;//拆箱
包装类的和基本数据类型的使用注意事项
1.包装类是引用数据类型,所以它可以接受null值,而基本数据类型不可以
public class Strdent{
    //private Integer Id;
    //会空指针
    private Long Id;
}
2.包装类型不是用来替代基本数据类型的,而是用来弥补基本数据类型无法使用函数的问题。
基本数据类型可以用 == 比较值内容。

包装类型默认值为null,而基本数据类型默认值为0false等等。
3.但是在数据参数传递时,大多数情况基本和包装可以混淆使用。

3.会使用Math类进行数学运算

Math数学类

main(){
    //圆周率,自然底数
    Math.Ip
    //求两者中的最小值
    Math.min(10,9);//int min = Math.min(10,9);
    //求两者中的最大值
    Math.max(10,9);
    //求绝对值
    Math.abs(-10);
    //求幂运算
    Math.pow(2,3);//double
    //四舍五入
    Math.round(10.5);//long
    //向上取整
    Math.ceil(10.2);//double
    //向下取整
    Math.floor(10.8);//double
    //开平方
    Math.sqrt(4);//double
    //求随机数[0.0,1.0]
    Math.random();//double
    //求随机范围内的整数[min,max]
    (int)(Math.random() * (max - min) + 1);
}

Random随机数类

//创建对象
Random random = new Random();
//获取随机整数【0,10】
int randInt = random.nextInt(10);
//获取随机小数【0.0,1.0】
doublie randDouble = random. nextDouble();
//求随机范围内的整数[min,max]
rand.nextInt(max - min + 1) + min;

世界上市没有随机数的

main(){
    //seed 种子数
    Random random1 = new Random(10);
    Random random2 = new Random(10);
    
    int randInt1 = random1.nextInt(20);
    int randInt2 = random2.nextInt(20);
    syso(xxxx);
    //System.nanoTime()//纳秒值
    (seedUniquqfier() ^ System.nanoTime());
}

4.会使用Random获取随机数

在这里插入图片描述

实用类二

1.掌握字符串的常用API

1.获取字符串的长度 xxx.length()

main(){
    //提示输入用户名和密码
    Scanner input = new Scanner(System.in);
    syso("用户名");
    String username = input.next();
    syso("密码");
    String password = input.next();
    //用字符串的长度进行判断xxx.length();
    int length = password.length();
    if(length < 6){
      syso("密码长度不合格"); 
      return;
    }
    syso("登录成功");
}
  1. 判断字符串内容是否相同 equals(Object obj)
main(){
    Scanner input = new Scanner(System.in);
     syso("用户名");
    String username = input.next();
    syso("密码");
    String password = input.next();
    //假设存储一下用户名和密码
    String realUsername = "shihaoran";
    String realPwd = "naroahihs";
    //用户名和密码同事相同
    if(username.equals(realUsername) && Pwd.equals(realPwd)){
    	syso("登录成功!");    
    }else{
        syso("用户名或密码错误!");
    }
        
}

3.equalsIgnoreCase---->不区分大小写

4.toUpperCase()------>全大写

5.toLowerCase()------>全小写

6.防止在一定程度上出现NPE,空指针的异常出现

/*if((xxxx).equals("skjf") && (xxxx).equals("dffasd")){

}*/
//推荐下面的,固定值在前,不固定值在后
if("askdjfl".equals(xxxxx) && "sssaskdj".equals(xxxxx)){
    
}

7.字符串拼接 String concat(String anotherString);

String str1 = "hello";
String str2 = "world";
string str3 = str1 + str2;
syso("sdjf" + str2);
//用concat连接字符串
String str3 = Str1.concat(str2);

8.int indexOf(String subStr) …的索引,从左开始,只会寻找第一个

9.int lastIndexOf(String subStr) …的索引, 从右开始,只会寻找第一个

//....的索引,从左开始,只会寻找第一个
String str1 = "helloworld";
int index = str1.indexOf("o");
//....的索引, 从右开始,只会寻找第一个
int lastIndexOf = str1.lastIndexOf("o");

10.int indexOf(String sbuStr,int fromIndex )从左开始查找某个位置的字符

//从左开始查找某个位置的字符
int indexOf = str1.indexOf("o",index + 1)

11.char charAt( int index) 获取指定索引的字符

12.String substring(int startindex);从指定位置开始截取字符串

13.String substring(int startlndex,int endlndex);从指定位置开始截取指定位置结束的字符串

14.去除字符串两端空格:String trim();

//用户输入的名称不能为空/空格,长度不能小于6位
main(){
    String userInput = "";
    //判断用户名
if("".equals(userInput.trim())){
        syso("用户名不能为空");
    }else if(userInput.length() < 6){
        syso("用户名不能小于6位");
    }else{
        syso("用户合法!");
    }
}

15.替换字符串:String replace(String oldStr,String newStr);

//替换输入的字符串
main(){
    Scanner input = new Scanner(System.in);
    syso(xxxxxxx);
    String userInput = input.next();
    //敏感字,替换
    //userInput.replace(oldChar,newChar)
    String replace = userInput.replace("垃圾","**");
    syso("你输入的是:" + replace);
}

16.String[] split(String 正则表达式)

main(){
    String str = "长亭外 古道边 芳草碧连天"//正则 regular expression regex
   	//一种规则,简单模式,复合模式 \d{9}
   	//可以匹配规则
        /可以按照空格拆,也可以按照~拆
    Sting[] split = Str.split(" ");
    for(String stri : split){
        syso(stri)
    }
}

17.将字符串转换为字符数组:char[] toCharArray();

构造方法还有特殊用途!!!!未完待续。

2.掌握StringBuffer的基本使用

String字符串Buffer缓冲区

字符串String引用数据类型,那么每一次使用字符串都需要创建对象(在方法区中存在一个字符串常量池,所以有些时候,它不会创建对象),字符串拼接的时候,每一次都在创建新的字符串对象。效率特别低!

循环中不要使用“+”号来拼接字符串,因为底层是使用StringBuffer/StringBuilder实现的。

循环外面,也不推荐使用“+”号,虽然它不会转换为StringBuffer/StringBuilder但是它会产生新的字符串对象

构造方法:

StringBuffer();
StringBuffer(String str);

常用的方法:

1.append(任意类型数据);追加字符串
2.insert(int index,任意类型数据);在指定位置插入字符串,原有数据后移
3.reverse();字符串反转

4.toString();转换为字符串

mian(){
    StringBuffer sb = new StringBuffer();
    StringBuffer sb = new StringBuffer("xxxxx") ;
    sb.append(10);
    sb.append(11);
    sb.append("abc");
    String string = sb.toString();
    syso(stromg)
    //在指定的位置插入字符串
    sb.insert(3,"hehe");
    syso(sb);
    //字符串反转
    sb.reverse();
    syso(sb);
}

3.掌握日期类的使用和日期格式转换Date

掌握时间格式转换SimpleDateFormat

main(){
    Date date = new Date();
    syso(date);
    //Mon Apr 22 11:25:25 CST 2019
    //格式转换对象 SimpleDateFormat
    //转换的格式字符串
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
   String format = sdf.format(date);
    syso(format);
   
    try{ 
   		Date parse = sdf.parse("2019年04月");
    	syso(parse);
        //日期格式异常
    }catch(ParseException e){
        e.printStackTrace();
    }
}

掌握日期类型的使用Calendar

Calender:定义成常量。

main(){
    //消除时间敏感性
    Calendar calendar = Calendar.getInstance();
    //获取年份或者月份信息
   	int dayOfMonth = calendar.get();
    syso(dayOfMonth);
    //不要使用魔法值,要使用常量
    int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
    syso(dayOfMonth);
    //中国时间注意加减1,从西方时间转换
    int dayOfMonth = calendar.get(Calendar.DAY_OF_WEEK);
    syso(dayOfMonth);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值