能够定义并使用枚举类型
掌握包装类及装箱、拆箱概念
会使用Math类进行数学运算
//一周七天的枚举
public enum Week {
MON,TUE,WED,THU,FRI,SAT,SUN
}
public class WeekDemo1 {
/**
* 做什么事情
* */
public void doWhat(int day){
//使用条件判断
if(day>7 || day<1){
System.out.println("参数错误,应在1-7之间");
return;
}
switch(day){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日,努力写代码!");
break;
case 6:
System.out.println("星期六,休息!看电影!");
break;
case 7:
System.out.println("星期日,休息!看电影!");
break;
default:
System.out.println("地球上的一个星期就7天");
}
}
public static void main(String[] args){
WeekDemo1 wd=new WeekDemo1();
wd.doWhat(5);
wd.doWhat(10);
}
}
/**
* 枚举常量的定义和使用
* */
public class WeekDemo2 {
/**
* 做什么事情
* */
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天");
}
}
public static void main(String[] args){
WeekDemo2 wd=new WeekDemo2();
wd.doWhat(Week.FRI);
}
}
public class Test {
// 定义枚举
public enum Level {
L1,L2,L3
}
public void show(Level level) {
switch (level) {
case L1:
System.out.println("大数据开发工程师");
break;
case L2:
System.out.println("大数据挖掘工程师");
break;
case L3:
System.out.println("大数据架构师
");
break;
default:
System.out.println("输入有错");
}
}
public static void main(String[] args) {
Test t = new Test();
t.show(Level.L1);
Level level = Level.U2;
t.show(level);
t.show(Level.L3);
}
}
包装类
包装类把基本类型数据转换为对象
每个基本类型在java.lang包中都有一个相应的包装类
包装类的作用
提供了一系列实用的方法
集合不允许存放基本数据类型数据,存放数字时,要用包装类型
//包装类的构造方法
package cn.com.jbit;
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);
//除Character类外,其他包装类可以一个字符串为参数构造它们的实例
//编译错误
//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);
//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);
//当包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
Integer i3=new Integer(null);
Double d4=new Double("包装类");
System.out.println(i3+"\t"+d4);
}
}
byteValue()、intValue()
longValue()、shortValue()
doubleValue()、floatValue()
charValue()、booleanValue()
XXXValue():包装类转换成基本类型
Integer integerId=new Integer(25);
int intId=integerId.intValue();
toString():以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
String sex=Character.toString('男');
String id=Integer.toString(25);
parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
int num=Integer.parseInt("36");
boolean bool=Boolean.parseBoolean("false");
valueOf()
所有包装类都有如下方法(基本类型->包装类)
Integer intValue = Integer.valueOf(21);
package cn.com.jbit;
/**
* 包装类常用方法
* */
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("*************************");
//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("*************************");
//所有包装类valueOf(type value)
Integer intValue=Integer.valueOf(21);
System.out.println(intValue);
Boolean bool=Boolean.valueOf(false);
System.out.println(bool);
System.out.println("*************************");
//除Character类外,其他包装类valueOf(String s)
intValue=Integer.valueOf("32");
//bool=Boolean.valueOf("true");
bool=Boolean.valueOf("love");
//编译错误
//Character c=Character.valueOf("a");
System.out.println(intValue);
System.out.println(bool);
System.out.println("*************************");
//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("love");
boolean flag=Boolean.parseBoolean("false");
System.out.println(flag);
System.out.println("*************************");
//基本类型和包装类的自动转换:装箱和拆箱
//装箱
Integer intObject=5;
//拆箱
int intValue2=intObject;
System.out.println(intObject+"\t"+intValue2);
}
}
JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
包装类并不是用来取代基本数据类型的
在基本数据类型需要用对象表示时使用
java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数) 和PI(圆周率)
Math.abs(-3.5); //返回3.5
Math.max(2.5, 90.5);//返回90.5
int random = (int) (Math.random() * 10); //生成一个0-9之间的随机数
//幸运抽奖
package cn.com.jbit;
import java.util.Scanner;
/*
* 幸运抽奖:会员号的百位数与系统随机数相同,即为中奖
* */
public class GoodLuck {
public static void main(String[] args) {
//随机产生一个0-9之间的任意整数
int random=(int)(Math.random()*10);
// System.out.println(random);
//从控制台接收一个任意的四位数
System.out.print("请输入4位会员号:");
Scanner input=new Scanner(System.in);
int custNo=input.nextInt();
//获得会员号的百位数
int baiwei=custNo/100%10;
if(baiwei==random){
System.out.println(custNo+"是幸运客户,获得精美MP3一个。");
}else{
System.out.println(custNo+" 谢谢您的支持!");
}
}
}
生成随机数的其他方式
java.util.Random类
Random rand=new Random(); //创建一个Random对象
for(int i=0;i<20;i++){//随机生成20个随机整数,并显示
int num=rand.nextInt(10);//返回下一个伪随机数,整型的 System.out.println(“第”+(i+1)+“个随机数是:”+num);
}
package cn.com.jbit;
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);
}
}
}
String类
生活中的字符串
“Hello World”
“www.baidu.cn”
使用String对象存储字符串
String s = “Hello World”;
String s = new String(“Hello World”);
String类位于java.lang包中,具有丰富的方法
计算字符串的长度、比较字符串、连接字符串、提取字符串
//注册新用户注册密码长度不少于6位
package cn.com.jbit;
import java.util.*;
public class Register {
/**
* 注册密码长度不少于6位
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String uname,pwd;
System.out.print("请输入用户名: ");
uname=input.next();
System.out.print("请输入密码: ");
pwd=input.next();
if(pwd.length()>=6){
System.out.print("注册成功! ");
}else{
System.out.print("密码长度不能小于6位!");
}
}
}
//字符串比较
/**
*String类提供了equals( )方法,比较存储在两个字符串对象的内容是否一致
*注册成功后,实现登录验证。用户名为“TOM”,密码为“1234567”
*/
package cn.com.jbit;
import java.util.*;
public class Login {
/**
* 登录
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String uname,pwd;
System.out.print("请输入用户名: ");
uname=input.next();
System.out.print("请输入密码: ");
pwd=input.next();
if(uname.equals("TOM")&&pwd.equals("1234567")){
System.out.print("登录成功! ");
}else{
System.out.print("用户名或密码不匹配,登录失败!");
}
}
}
equals():检查组成字符串内容的字符是否完全一致
“==”和equals()有什么区别呢?
package cn.com.jbit;
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));
}
}
字符串比较的其他方法
使用equalsIgnoreCase()方法
使用toLowerCase()方法
使用toUpperCase()方法
登录时不考虑用户名的大小写问题,实现登录
package cn.com.jbit;
import java.util.*;
public class Login {
/**
* 登录
*
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String uname,pwd;
System.out.print("请输入用户名: ");
uname=input.next();
System.out.print("请输入密码: ");
pwd=input.next();
/*
if(uname.equals("TOM")&&pwd.equals("1234567")){
System.out.print("登录成功! ");
}else{
System.out.print("用户名或密码不匹配,登录失败!");
}*/
if(uname.equalsIgnoreCase("TOM")&&pwd.equalsIgnoreCase("1234567")){
System.out.print("登录成功! ");
}else{
System.out.print("用户名或密码不匹配,登录失败!");
}
}
}
//会员注册
package cn.jbit.regist;
import java.util.Scanner;
public class Register {
/**
* 验证注册信息
* @return flag 验证信息
*/
public boolean verify(String name,String pwd1,String pwd2){
boolean flag=false;
if(name.length()<3 || pwd1.length()<6){
System.out.println("用户名长度不能小于3,密码长度不能小于6!");
}else if(!pwd1.equals(pwd2)){
System.out.println("两次输入的密码不相同!");
}else{
System.out.println("注册成功!请牢记用户名和密码。");
flag=true;
}
return flag;
}
public static void main(String[] args) {
Register r=new Register();
Scanner input = new Scanner(System.in);
String uname,p1,p2;
boolean resp=false;
System.out.println("***欢迎进入注册系统*** \n");
do{
System.out.print("请输入用户名: ");
uname=input.next();
System.out.print("请输入密码: ");
p1=input.next();
System.out.print("请再次输入密码: ");
p2=input.next();
resp=r.verify(uname, p1, p2);
}while(!resp);
}
}
字符串连接
方法1:使用“+”
方法2:使用String类的concat()方法
package cn.com.jbit;
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);
}
}
String字符串常用方法:
方法名 说明
public int indexOf(int ch) 搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1
public int indexOf(String value)
public int lastIndexOf(int ch) 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1
public int lastIndexOf(String value)
public String substring(int index) 提取从位置索引开始的字符串部分
public String substring(int beginindex,int endindex) 提取从beginindex和endindex之间的字符串部分(包头不包尾)
public String trim() 返回一个前后不含任何空格的调用字符串的副本
equalsIgnoreCase() 忽略大小写来比较
toLowerCase() 字符串转为小写
toUpperCase() 字符串转为大写
split() 根据括号内的条件进行分割
concat() 连接,跟“+”的作用一样
package cn.com.jbit;
import java.util.*;
public class Verify{
public static void main(String[] args) {
// 声明变量
boolean fileCorrect = false; //标识文件名是否正确
boolean emailCorrect = false; //标识E-mail是否正确
System.out.print("---欢迎进入作业提交系统---");
Scanner input = new Scanner(System.in);
System.out.println("请输入Java文件名: ");
String fileName = input.next();
System.out.print("请输入你的邮箱:");
String email = input.next();
//检查Java文件名
int index = fileName.lastIndexOf("."); //"."的位置
if(index!=-1 && index!=0 &&
fileName.substring(index+1,
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("作业提交失败!");
}
}
}
public class Lyric {
/**
* 拆分歌词
*
*/
public static void main(String[] args) {
String words="长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";
String[] printword=new String[100];//接收数组
System.out.println("***原歌词格式***\n"+words);
System.out.println("\n***拆分后歌词格式***");
printword=words.split(" ");//按照空格进行拆分
for(int i=0;i<printword.length;i++){
System.out.println(printword[i]);//打印输出
}
}
}
输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数
package cn.com.jbit;
import java.util.Scanner;
public class Counter {
public int counter(String inputs,String word){
int counter=0;//计数器,初始化0
String[] temps=new String[inputs.length()];
//字符串转换成数组
for(int i=0;i<temps.length;i++){
temps[i]=inputs.substring(i,i+1);
}
//比较字母,计数
for(int j=0;j<temps.length;j++){
if(temps[j].equals(word)){
counter++;
}
}
return counter;
}
public static void main(String[] args) {
Scanner myinput=new Scanner(System.in);
Counter cnt=new Counter();
//定义2个变量,接收用户的输入
String myString;
String myWord;
System.out.print("请输入一个字符串:");
myString=myinput.next();
System.out.print("请输入要查找的字符:");
myWord=myinput.next();
//调用方法,输出结果
int geshu=cnt.counter(myString,myWord);
System.out.print("\""+myString+"\"中包含"+geshu+"个\""+myWord+"\"。");
}
}