一个星期快速自学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;   
        }
    }
    
    public void setGender(String gender){
        if(gender.equals("男") || gender.equals("女")){
            this.gender = gender;
        }else{
            syso(xxxx);
        }
    }
}

public class Test{
    main(){
        Student stu = new Student();
        // stu.age = -1000;(采用封装解决)  为了解决不合理赋值
        stu.gender = "呵呵"; // 男 女 xx    String类型  ->  性别类型呢?
         
    }
}

枚举的使用:


/**
 * 性别类型
 * @author Charles7c
 * 2019年4月21日 上午9:59:03
 */
public enum Gender {
	// 常量 static final
	// 男,女
	// 0 1
	MALE,FEMALE
}



package cn.kgc.demo1;
/**
 * 学生类
 */
public class Student {
	
	private String name;
	private int age;
	// private String gender; 0 1
	private Gender gender;
	
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";
	}
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	/*public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}*/
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	
}


package cn.kgc.demo1;

public class Test {

	public static void main(String[] args) {
		
		Student student = new Student();
		student.setName("豆涵");
		student.setAge(10);
		// student.setGender("呵呵");
		// 在很多场景下 我们需要其他开发者 在调用我们的某些方法时 只能传递某几个固定值
		// 那么就需要枚举
		student.setGender(Gender.MALE);
		System.out.println(student);
		
	}

}

2.掌握包装类的使用

  1. 基本数据类型没有函数,所以在当你需要对基本数据类型进行操作时,那么可以使用对应的包装类型。
  2. 集合泛型要求数据类型必须是包装类型。

包装类型常用API

  1. 字符串 ->基本数据类型 / 包装类型(我们在网络数据传输中,你的数据表层会转换为字符串,服务器在接受时就是一些字符串而已,但是你也知道字符串对于有些数据的操控并不是太方便,所以需要进行转换)
String value = "10";
// 可将字符串转换为对应的基本类型
int parsrInt = Integer.parsrInt(value);
// 可以将字符串转换成对应的包装类型
Integer valueof = Integer.valueof(value);
  1. 基本/包装类型 -> 字符串
int a = 10;
// 凡是与字符串用+号拼接的都成为了字符串
String b = a+"";
// 将基本数据类型转换为字符串
String string = Integer.toString(a);
// 将包装类型转换为字符串
Integer c = Integer.valueof(a);
String string2 = c.toString();

拆箱和装箱

**拆箱:**包装类型转换为基本数据类型
**装箱:**基本数据类型转换为包装类型

包装类和基本数据类型的使用注意事项

  1. 包装类是引用数据类型,所以它可以接受null值,而基本数据类型不可以
public class Student{
	// private Integer id;
	private Long id;
	}
  1. 包装类型不是用来替代基本数据类型的,而是用来弥补基本数据类型无法使用函数的问题。
    基本数据类型可以用==比较值得内容 包装类型默认值为null,而基本数据类型默认值为0 false等等
  2. 但是在数据蚕食传递时,多多是情况基本和包装可以混淆使用

3.Math和Random类

Math教学类

// 圆周率 自然数底数
// 求两者中的最小值
int mins = Math.min(10,9);
System.out.println(min); // 9
// 求两者中的最大值
int maxs = Math.max(10,9);
System.out.println(maxs); // 10
// 求绝对值
int abss = Math.abs(-10);
System.out.println(abss); // 10
// 求幂运算  2的3次方
double pow = Math.pow(2, 3);
System.out.println(pow); // 8

// 四舍五入
long round = Math.round(10.5);
System.out.println(round); // 11

// 向上取整
double ceil = Math.ceil(10.2);
System.out.println(ceil); // 11
// 向下取整
double floor = Math.floor(10.8);
System.out.println(floor); // 10

// 开平方
double sqrt = Math.sqrt(4);
System.out.println(sqrt); // 2

// 求随机数 [0.0,1.0)
double random = Math.random();
// 求范围内的随机整数[min,max)
// (int)(Math.random() * (max - min)) + min

4.掌握String的常用API

  1. 获取字符串长度:int length();
  2. 判断字符串的内容是否相同:boolean equals(Object obj)
  3. 不区分大小写的字符串比较:boolean equalslgnoreCase(String str);
  4. 将字母全部转换为大写/小写:String toUpperCase();/ String toLowerCase();
  5. 字符串拼接:String concat(String anotherString);
		String str1 = "hello";
		String str2 = "world";
		String str3 = str1.concat(str2);
		System.out.println(str3);
  1. 查找指定字符串第一次出现的位置:int indexOf(String subtr);
String str1 = "helloworld";
		
		int index = str1.indexOf("o");
		System.out.println(index);// 4 输出的是索引 从左开始第一个
		
		int lastIndexOf = str1.lastIndexOf("o");
		System.out.println(lastIndexOf);// 6 从右开始第一个
  1. 从指定位置(包含)开始,查找指定字符串出现的位置:int indexOf(String subtr,int fromIndex);
  2. 查找指定字符串最后出现的位置:String substring(int starlndex);
  3. 从指定位置开始截取子字符串:String substring(int startIndex);
String str1 = "helloworld";
String substring2 = str1.substring(3);
		System.out.println(substring2);
		// loworld 会获取索引3以后的所有字符
  1. .从指定位置开始截取到指定位置结束的子字符串:String substring(String subtr,int fromIndex); [ substring, fromIndex)
String str1 = "helloworld";
String substring = str1.substring(3, 6);
		System.out.println(substring);// low
  1. 获取指定索引的字符:char charAt(int index);
String str1 = "helloworld";
char charAt = str1.charAt(5);
		System.out.println(charAt);// w
  1. 去除字符串两端的空格:String trim();
  2. 替换字符串:String replace(String oldStr,String newStr);
String replace = userInput.replace("垃圾", "**");
(userInput 只是一个键盘输入的一个变量名)
  1. 拆分字符串:String[] split(String 正则表达式);
String str = "长亭外~古道边~芳草碧连天";
		// 正则 regular expression  regex
		// 一种规则  简单模式  复合模式 \d{9}
		// 可以匹配规则
		String[] split = str.split("~");
		for (String stri : split) {
			System.out.println(stri);
		}
  1. 将字符串转换为字符数组:char[] toCharArray();

2.掌握StringBuffer的基本使用

String字符串 Buffer缓冲区
字符串String 引用数据类型,那么每一次使用字符串都需要创建对象(在方法区中存在一个字符串常量池,所以有些时候,它不会创建对象);字符串拼接的时候,每一次都在创建新的字符串对象,效率特别低!
循环中不要使用+号使用拼接字符串,因为底层是使用StringBuffer/StringBuilder实现的。

构造方法:
StringBuffer();
StringBuffer(String str);
常用方法:
append (任意数据类型);追加字符串
insert(int index, 任意类型数据); 在指定位置插入任意数据 原有数据后移
reverse(); 字符串反转
toString(); 转换为字符串

掌握StringBuffer和String的区别

String每一此拼接一个字符串都要再次创建一个新的空间,一次只能两个两个的拼接,按下图,Str要拼接4次
StringBuffer则是可以不用再次创建空间,直接进行一次性拼接完成

在这里插入图片描述

// 创建对象
		// StringBuffer sb = new StringBuffer();
		StringBuffer sb = new StringBuffer("begin:");
		// 拼接字符串
		sb.append(10);
		sb.append(11);
		sb.append("abc");
		String string = sb.toString();
		System.out.println(string);// begin:1011abc
		
		// 在指定的位置插入数据
		sb.insert(3, "hehe");
		System.out.println(sb);// beghehein:1011abc
		
		sb.reverse();
		System.out.println(sb);// cba1101:niehehgeb
	
	
		// 12345678
		String numStr = "12345678";
		// 利用字符串缓冲区对象来进行内容插入 -> 变相拼接
		StringBuffer sb = new StringBuffer(numStr);
		for (int i = numStr.length() - 3; i > 0 ; i -= 3) {
			sb.insert(i, ",");
		}
		System.out.println(sb);// 12,345,678

3.掌握时间类型Date

java.util.Date

掌握时间格式转换SimpleDateFormat

Date date = new Date(); 会获取当前的系统时间进行赋值
//输出结果:Fri Apr 26 18:17:48 CST 2019(美国的看法)
SimpleDateFormat simpleDateFormat = 
				new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String f = simpleDateFormat.format(date);
		System.out.println(f);
		// 这样的话就会转成目前当下的时间值
package cn.kgc.demo3;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Demo1 {

	private Date birthday;
	
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date);
		// 过时了
		int month = date.getMonth();
		// sCalendar.get(Calendar.MONTH)
		// 格式转换对象 SimpleDateFormat
		// 转换的格式字符串
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String format = sdf.format(date);
		System.out.println(format);
		
		try {
			Date parse = sdf.parse("2019年04月21日 11:31:42");
			System.out.println(parse);
		} catch (ParseException e) {
			e.printStackTrace();// 返回到Fri Apr 26 18:17:48 CST 2019这种格式
		}
		
	}

}

掌握日期类型的使用Calendar


	public static void main(String[] args) {
		
		// 消除时间敏感性
		Calendar calendar = Calendar.getInstance();
		// 获取时间信息
		// int dayOfMonth = calendar.get(5);
		// 不要使用魔法值 使用常量
		int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println(dayOfMonth);
		int month = calendar.get(Calendar.MONTH);
		System.out.println(month);
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println(dayOfWeek);
	}

猜你喜欢

转载自blog.csdn.net/weixin_44793608/article/details/89574564