一、认识枚举
枚举是指由一组固定的常量组成的类型,存放在 java.lang 包中使用关键字enum定义;
定义枚举语法格式如下:
[Modifier] enum enumName{
enumContantName1[,enumConstantName2.......[;]]
//[field,method]
}
1.Modifier是访问修饰符,如public等。
2.enum是关键字。
3.//[field,method]表示其它的成员,包括构造方法,至于枚举常量的后面。
4.在枚举中,如果除了定义其它成员,则枚举常量必须以分号(;)结尾。
二、枚举的使用
在java中,通常使用枚举表示一组个数有限的值,用于实现对输入的值进行约束检查,保证数据的安全性!`
//定义枚举类
package kgc00;
//一周七天的枚举
public enum Week {
MON,TUE,WED,THU,FRI,SAT,SUN
}
//定义的实现类
package kgc00;
/**
1. 枚举常量的定义和使用
2. @author 19746
3. */
public class WeekDemo2 {
/**
4. 做什么事情
*/
public void doWhat(Week day) {
//使用枚举
switch(day) {
case MON:
case TUE:
case WED:
case THU:
case FRI:
System.out.println("工作日,努力写代码!");
break;
case SAT:
System.out.println("星期六,休息!看电影!");
break;
case SUN:
System.out.println("星期日,休息!看电影!");
break;
default:
System.out.println("地球上的一个星期就7天");
}
}
}
枚举的好处:
1.枚举可以使代码更容易维护,确保数据的安全性,也就是必须要指定合法的值。
2.枚举易于编程时的输入,方便使用,只需输入枚举名点出来
3.枚举是代码更清晰,允许用描述性的名称来表示数据,使用是方便直观。
//测试类
public class Test {
public static void main(String[] args) {
WeekDemo2 wd2=new WeekDemo2();
wd2.doWhat(Week.FRI);
}
}
二、包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。
包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
1.每个包装类的对象可以封装一个相应的基本类型的数据,并提供了其它一些有用的方法。包装类对象一经创建,其内容(所封装的基本类型数据值)不可改变。
2.包装类的作用:
a.包装类作用和基本数据类型对应的类存在,方便对象的操作
b.包装类包含每种数据类型的相关属性,最大值,最小值等,以及相关的操作方法。
3.包装类的构造方法
package kgc01;
//包装类的构造方法
public class Demo {
public static void main(String[] args) {
//所有包装类都可将与之对应的基本数据类型作为参数,来构造他们的实例
Integer i=new Integer(34);
Double d=new Double(98.7);
Boolean b=new Boolean(true);
Character c=new Character('a');
System.out.println(i+"\t"+d+"\t"+b+"\t"+c);
System.out.println("-----------我是分割线-------------");
//除Cgaracter类外,其他包装类可以一个字符串为参数构造他们的实例
//编译错误
//Character c2=new Character("a");
Integer i2=new Integer("34");
Double d2=new Double("98.7");
Boolean b2=new Boolean("true");
System.out.println(i2+"\t"+d2+"\t"+b2);
System.out.println("-----------我是分割线-------------");
//Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
Boolean b3=new Boolean("TRue");
Boolean b4=new Boolean("false");
Boolean b5=new Boolean("love");
System.out.println(b3+"\t"+b4+"\t"+b5);
System.out.println("-----------我是分割线-------------");
//当包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
Integer i3=new Integer(null);
Double d4=new Double("包装类");
System.out.println(i3+"\t"+d4);
}
}
4.包装类的常用方法
package kgc02;
/**
* 包装类常用方法
* @author 19746
*
*/
public class Demo {
public static void main(String[] args){
//XXXValue():包装类转换成基本类型
Integer integerId=new Integer(25);
int intId=integerId.intValue();
System.out.println(intId);
Boolean booleanVal=new Boolean(true);
boolean bool2=booleanVal.booleanValue();
System.out.println(bool2);
System.out.println("***********1**************");
//toString():以字符串形式返回包装对象表示的基本类型数据
String sex=Character.toString('男');
String id=Integer.toString(89);
System.out.println(sex);
System.out.println(id);
String sex2='男'+"";
String id2=89+"";
System.out.println(sex2);
System.out.println(id2);
System.out.println("************2*************");
//所有包装类valueOf(type value)
Integer intValue=Integer.valueOf(21);
System.out.println(intValue);
Boolean bool=Boolean.valueOf(false);
System.out.println(bool);
System.out.println("**********3*************");
//parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)
int i=Integer.parseInt("89");
System.out.println(i);
//boolean flag=Boolean.parseBoolean("true");
//boolean flag=Boolean.parseBoolean("TRue");
//boolean flag=Boolean.parseBoolean("false");
boolean flag=Boolean.parseBoolean("false");
System.out.println(flag);
System.out.println("************4***************");
//基本类型和包装类的自动转换:装箱和拆箱
//拆箱
Integer intObject=5;
//拆箱
int intValue2=intObject;
System.out.println(intObject+"\t"+intValue2);
}
}
5.示例
package kgc03;
import java.util.Scanner;
/**
* 幸运抽奖:会员号的百位数与系统随机数相同,即为中奖
* @author 19746
*
*/
public class GoodLuck {
public static void main(String[] args) {
//随机产生一个0-9之间的任意整数
int random=(int)(Math.random()*10);
System.out.println(random);
//从控制台接收一个任意的四位数
System.out.println("请输入4位会员号:");
Scanner input=new Scanner(System.in);
int custNo=input.nextInt();
//获得会员号的百位数
int baiwei=custNo/100%10;
if(baiwei==random) {
System.out.println(custNo+"是幸运客户,获得精美iPhone X一部。");
}else {
System.out.println(custNo+"谢谢您的支持!");
}
}
}
6、Random类
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random rand = new Random();// 创建一个Random对象
for (int i = 0; i < 20; i++) {// 随机生成20个随机整数,并显示
int num = rand.nextInt(10);// 返回下一个伪随机数,整型的
System.out.println("第" + (i + 1) + "个随机数是:" + num);
}
}
}
7、
package kgc05;
import java.util.Scanner;
/**
* 注册密码长度不少于6位
* 字符串长度
* @author 19746
*
*/
public class Register {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String uname, pwd;
System.out.println("请输入用户名:");
uname = input.next();
System.out.println("请输入密码:");
pwd = input.next();
if (pwd.length() >= 6) {
System.out.println("注册成功");
} else {
System.out.println("密码长度不能小于6位!");
}
}
}
package kgc06;
import java.util.Scanner;
public class Login {
/**
* 登录
* 字符串比较
*/
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String uname,pwd;
System.out.println("请输入用户名:");
uname=input.next();
System.out.println("请输入密码:");
pwd=input.next();
if(uname.equals("TOM")&&pwd.equals("1234567")) {
System.out.println("登录成功!");
}else {
System.out.println("用户名或密码不匹配,登录失败!");
}
}
}
package kgc07;
/**
* 演示示例4:==和equals()
* @author 19746
*
*/
public class StrEqu {
public static void main(String[] args) {
String str1="bdqn";
String str2="bdqn";
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
String str3=new String("bdqn");
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
String str4=new String("bdqn");
System.out.println(str3==str4);
System.out.println(str3.equals(str4));
}
}
package kgc08;
import java.util.Scanner;
/**
* 登录
* 演示示例5:忽略大小写的字符串比较
* @author 19746
*
*/
public class Login {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String uname,pwd;
System.out.println("请输入用户名:");
uname=input.next();
System.out.println("请输入密码:");
pwd=input.next();
/*
if(uname.equals("TOM")&&pwd.equals("1234567")) {
System.out.println("登录成功!");
}else {
System.out.println("用户名或密码不匹配,登录失败!");
}*/
if(uname.equalsIgnoreCase("TOM")&&pwd.equalsIgnoreCase("1234567")) {
System.out.println("登录成功");
}else {
System.out.println("用户名或密码不匹配,登录失败!");
}
}
}
package kgc09;
/**
* 打印成绩单
* 演示示例6:字符串连接
* @author 19746
*
*/
public class PrintScore {
public static void main(String[] args) {
int sqlScore=80; //SQL成绩
int javaScore=90; //java成绩
double htmlScore=86.7;//HTML成绩
//成绩单
String scoreSheet="SQL:"+sqlScore+"java:"+javaScore+"HTML:"+htmlScore;
//打印成绩单
System.out.println("*******成绩单*******");
System.out.println(scoreSheet);
String bottom="\n\t\t版权所有:".concat("大锋");
System.out.println(bottom);
}
}
package kgc010;
import java.util.Scanner;
/**
* 演示示例7:字符串提取
*
* @author 19746
*
*/
public class Verify {
public static void main(String[] args) {
// 声明变量
boolean fileCorrect = false;// 标识文件名是否正确
boolean emailCorrect = false;// 标识E-mail是否正确
System.out.println("---欢迎进入作业提交系统---");
Scanner input = new Scanner(System.in);
System.out.println("请输入JAVA文件名:");
String fileName = input.next();
System.out.println("请输入你的邮箱:");
String email = input.next();
// 检查JAVA文件名
int index = fileName.lastIndexOf(".");// "."的位置
if (index != -1 && index != 0 &&
fileName.substring(index + 1,//substring截取字符串方法
fileName.length()).equals("java")) {
fileCorrect=true;//标识文件名正确
}else {
System.out.println("文件名无效。");
}
//检查你的邮箱格式
if(email.indexOf('@')!=-1&&email.indexOf('.')>email.indexOf('@')) {
emailCorrect=true;//标识E-mail正确
}else {
System.out.println("E-mail无效。");
}
//输出检测结果
if(fileCorrect&&emailCorrect) {
System.out.println("作业提交成功!");
}else {
System.out.println("作业提交失败!");
}
}
}
package kgc010;
/**
* 字符串拆分
* 拆分歌词
* @author 19746
*
*/
public class Lyric {
public static void main(String[] args) {
String words="长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";
String[] printword=new String[100];//接收数组
System.out.println("***原歌词格式***\n"+words);
System.err.println("\n***拆分后歌词格式***");
printword=words.split("");//按照空格进行拆分
for(int i=0;i<printword.length;i++) {
System.out.println(printword[i]);//打印输出
}
}
}
package kgc010;
import java.util.Scanner;
/**
* StringBuffer类的使用
* @author 19746
*
*/
public class Testlnsert {
//每隔三位插入逗号
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一串数字:");
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.println(str);
}
}
//演示示例11:获取系统时间
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date=new Date();//创建日期对象
SimpleDateFormat formater=new SimpleDateFormat("yyyy—MM-dd HH:mm:ss");//定制日期格式
System.out.println("当前时间为:"+formater.format(date));
}
}
16.演示示例12: Calendar类的使用
import java.util.Calendar;
public class Test2 {
public static void main(String[] args) {
Calendar t = Calendar.getInstance();
System.out.println("今天是" + t.get(Calendar.YEAR) + "年" + (t.get(Calendar.MONTH) + 1) + "月"
+ t.get(Calendar.DAY_OF_MONTH) + "日");
// Calendar.DAY_OF_WEEK中Sunday是1
System.out.println("今天是星期" + (t.get(Calendar.DAY_OF_WEEK) - 1));
}
}