枚举类型:由一组固定的常量组成的类型
关键词enum
特点 类型安全
易于输入
代码清晰
而且枚举类型可以用于swich语句中
例如以下代码
定义个枚举类:
public enum Genders {
U1,U2,U3
}
定义个学生类·, 用枚举类创建变量
public class Student {
private Genders genders;
private String name;
public Student() {
}
public Student(Genders genders, String name) {
this.genders = genders;
this.name = name;
}
public Genders getGenders() {
return genders;
}
public void setGenders(Genders genders) {
this.genders = genders;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
利用get和set实现对其的赋值
编写测试类
public class Test {
public static void main(String[] args) {
Student student=new Student();
student.setName("张三");
student.setGenders(Genders.U1);
switch (student.getGenders()){
case U1:
System.out.println("打");
break;
case U2:
System.out.println("kaifa");
break;
case U3:
System.out.println("胜任");
}
}
}
这里赋的值为枚举类中的U1,带入swich语句中对应的"打"
包装类
包装类把基本类型数据转换为对象
每个基本类型在java.lang包中都有一个相应的包装类
作用:提供一系列实用方法。
集合不允许存放基本数据类型数据,存放数字时,要用包装类型
所有包装类都可将与之对应的基本数据类型作为参数,
例如
Integer num=new Integer("20");
Integer num1=new Integer(10);
System.out.println(num+num1);
以上代码第一个输出结果为20
第二个为10
所以输出结果为10+20=30
Double num3=new Double("2.1");
Integer num4=6;
System.out.println(num3+num4);
这里结果为8.1
valueOf()方法
XXXValue()方法:
包装类转换成基本类型
Integer num5=Integer.valueOf("6");
Integer num6=num5.intValue();
Double num7=num5.doubleValue();
System.out.println(num6);
System.out.println(num7);
num6为int输出为6
num7为double输出为6.0
注意
虽然可以用“123”但是不能用”abc“ ""里必须为数值类型
装箱:基本类型转换为包装类对象
例如:Integer in =5
Integer为包装类的对象
5为基本类型int的值
拆箱:包装类对象转换为基本类型的值
例如int in1=in
in1 为基本类型的值
in为包装类对象
所有包装类都是final类型不能创建自己的子类
String类
length()方法,确定字符串长度,返回的是字符串中的字符数
例如注册账号要求密码长度不能小于6
public class iiiii {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入用户名");
String name=input.next();
System.out.println("请输入密码");
String pwd=input.next();
if (pwd.length()<6){
System.out.println("注册失败");
}else {
System.out.println("注册成功");
}
}
}
如果长度小于6输出失败,否则输出成功
equals()方法,比较存储的字符串对象的内容是否一致
public class iiiii {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入用户名");
String name=input.next();
System.out.println("请输入密码");
String pwd=input.next();
if (name.equals("TOM")&&pwd.equals("1234567")){
System.out.println("登陆成功");
}else {
System.out.println("用户名或密码不对");
}
}
}
输入的用户名为TOM
密码为1234567时输出成功
==判断两个字符串在内存中的地址
而equals检查组成的字符串内容是否完全一致
如何实现不考虑大小写的问题应使用以下方法
equalsIgnoreCase()不区分大小写
toLowerCase()全部转换为小写
toUpperCase()全部转换为大写
public class iiiii {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入用户名");
String name=input.next();
System.out.println("请输入密码");
String pwd=input.next();
String s=pwd.toLowerCase();
String s1=pwd.toUpperCase();
System.out.println(s);
System.out.println(s1);
if (name.equalsIgnoreCase("TOM")&&pwd.equals("1234567")){
System.out.println("登陆成功");
}else {
System.out.println("用户名或密码不对");
}
}
}
这里方便显示方法效果定义了String 类型的变量来接收
因为用了不区分大小写
输入tom也可以输出登陆成功
字符串连接:
1可用连接符“+”
2可用concat()方法
字符串提取:
int indexOf()搜索第一个出现的字符或者字符串如果没有返回-1
public class iiiii {
public static void main(String[] args) {
String a="你好啊,我叫啊啊啊啊";
int i=a.indexOf("啊");
System.out.println(i);
}
}
返回值为2
因为从0开始而不是从1开始
int lastIndexOf()搜索最后一个出现的字符或者字符串如果没有返回-1
public class iiiii {
public static void main(String[] args) {
String a="你好啊,我叫啊啊啊啊";
int i=a.lastIndexOf("啊");
System.out.println(i);
}
}
返回值为9
String substring()提取从索引下标开始的字符串部分
public class iiiii {
public static void main(String[] args) {
String a="你好啊,我叫啊啊啊啊";
String b=a.substring(2);
System.out.println(b);
}
}
返回为字符串从 索引下标2开始
应为啊,我叫啊啊啊
也可以提取起始下标和结束下标的字符串部分
public class iiiii {
public static void main(String[] args) {
String a="你好啊,我叫啊啊啊啊";
String b=a.substring(2,6);
System.out.println(b);
}
}
起始下标包括在里面而结束下标不包括
所以输出结果为
啊,我叫
String trim()返回一个前后不含空格的字符串副本
public class iiiii {
public static void main(String[] args) {
String a=" 张三 ";
Scanner input=new Scanner(System.in);
System.out.println("请输入");
String b=input.next();
if (a.trim().equals(b)){
System.out.println("输入正确");
}else {
System.out.println("输入错误");
}
}
}
因为trim方法去除了a中的空格,所以输入正确
split() 将一个字符串分割为子字符串,结果作为字符串数组返回
public class iiiii {
public static void main(String[] args) {
String a="长亭外 古道边 芳草碧连天";
String[] as=a.split(" ");
int num=0;
for (String s : as) {
System.out.println(s);
num++;
}
System.out.println(num);
}
}
以" "分割 字符串有两个空格所以分割成三个元素
num循环次数为3
StringBuffer类:
对字符串频繁修改使用StringBUffer类可以大大提高程序执行效率
声明
StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer(“aaa”);
方法
toString()转换为Stringl类型
append()追加字符串
insert(index,"**") 插入字符串index为字符串的索引下标位置,**为插入字符串的内容
将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔
public class iiiii {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一串数字");
String s=input.next();
StringBuffer sbf=new StringBuffer(s);
for (int i=sbf.length()-3;i>0;i=i-3){
sbf.insert(i,",");
}
System.out.println(sbf
);
}
}
分析以上代码
首先声明StringBuffer
然后for循环
因为是从右边开始每3个数字分隔,所以应从最大长度-3的位置开始,然后大于0的时候结束,每次都是三个数字,每次都-3
再利用insert方法,在索引下标为i的时候加入“,”
经常改变内容的字符串最好不要使用String
字符串经常改变可使用StringBuffer,更高效
Math类:
里面有许多数学的计算方法
例如最大值最小值
向上取整
向下取整
四舍五入
正弦余弦等等
Radom类:
生成随机数
for (int i=0;i<20;i++){
int num7=random.nextInt(9);
System.out.println(num7);
}
这段代码的意思是从0-8中生成20个整数类型
日期类
Date表示日期和时间
创建日期对象
定制日期格式
因为默认格式比较复杂
public class iiiii {
public static void main(String[] args) {
Date date=new Date();
System.out.println(date);
SimpleDateFormat s=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
String now=s.format(date);
System.out.println(now);
}
}
SimpleDateFormat修改日期格式
Calendar类:
用于设置和获取日期/时间数据的特定部分
int get(int field)返回给定日历字段的值
MONTH 指示月
DAY_OF_MONTH月中的某一天
等许多方法
例如
计算2015年4月6日是一年中的第几星期
public class iiiii {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2015);
c.set(Calendar.MONTH, 4);
c.set(Calendar.DAY_OF_MONTH, 6);
int a = c.get(Calendar.WEEK_OF_YEAR);
System.out.println(a);
}
}
set方法指定日期年为2015
月为4
日为6
get方法获取当天在一年中是第几个星期返回值为int