1. equals方法
注意:比较字符串是否相等,用equals()方法,不能用等号“==”;
equals()方法比较字符串的内容,而等号比较值或内存地址。
package javase.jingjie.equals;
/**
* 关于java语言中如何比较两个字符串是否一致。
* ---通过调用SUN公司String类的equals方法,不能用等号“==”
* */
public class BiJiao {
public static void main(String[] args) {
String s1=new String("ABC");
String s2=new String("ABC");
System.out.println(s1==s2);//false 比较的是内存地址,两个新创建的对象不相等
//String已经重写了Object中的equals方法,比较的是内容
System.out.println(s1.equals(s2));//true
}
}
2.枚举:enum
(1)引入枚举案例
package javase.jingjie.MeiJu;
/**
* 需求:定义一个方法,该方法的作用是计算两个int 类型数据的商
* 如果计算成功则该方法返回1,若果执行失败则该方法返回0
* */
public class MeiJu01 {
public static void main(String[] args) {
int a=10;
int b=0;
int retValue=divide(a,b);
if(retValue==1) {
System.out.println("成功");
}else if(retValue==0) {
System.out.println("失败");
}
}
//实现需求
public static int divide(int a,int b) {
//try{}语句块中放着异常语句块,catch{}语句块放着处理异常的语句块
try {
//如果以下语句块无异常执行正确,则返回1,不用执行catch{}语句块;否则,执行catch语句块
int c=a/b;
return 1;//成功
}catch(Exception e){
return 0;//失败
}
}
}
(2) 枚举类型:enum
要求:枚举类型定义的变量都是大写,且变量数量有限。
package javase.jingjie.MeiJu;
public class MeiJu02 {
public static void main(String[] args) {
int a=10;
int b=0;
Result retValue=divide(a,b);
if(retValue==Result.SUCCESS) {
System.out.println("成功");
}else if(retValue==Result.FALL) {
System.out.println("失败");
}
}
//实现需求
public static Result divide(int a,int b) {
//try{}语句块中放着异常语句块,catch{}语句块放着处理异常的语句块
try {
//如果以下语句块无异常执行正确,则返回1,不用执行catch{}语句块;否则,执行catch语句块
int c=a/b;
return Result.SUCCESS;//成功
}catch(Exception e){
return Result.FALL;//失败
}
}
}
//定义一个枚举类型
enum Result{
//成功和失败。 规范要求:大写
SUCCESS,FALL//有限的数据
}
//四季
enum Season{
SPRING,SUMMER,AUTUMN,WINTER
}
//颜色
enum Color{
GREEN,BLUE,RED
}
3. 随机数:Random
(1) Random
package javase.jingjie.Random;
import java.util.Random;
/*
* 生成 随机数
* */
public class RandomTest {
public static void main(String[] args) {
// 创建一个新的随机数生成器
Random r=new Random();
//生成int类型的随机数
//int i=r.nextInt(101);
//System.out.println(i);
//循环生成5个随机数
for(int i=0;i<5;i++) {
System.out.println(r.nextInt(5));
}
}
}
(2)案例:生成5个不重复的随机数【1-5】
package javase.jingjie.Random;
/**
* 生成5个不重复的随机数【1-5】
* 结果:每次运行都会产生5个不同数字的随机数:15423,45123..........
* */
import java.util.Random;
public class RandomTest02 {
public static void main(String[] args) {
Random r =new Random();
int[] a=new int[5];
int index=0;
while(index<5) {
int temp=r.nextInt(6);
//伪代码
if(temp!=0 && !contain(a,temp)) {//!contain(a,temp)是保证不出现相等的随机数
a[index++]=temp;
}
//遍历
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}
}
//该方法完成判断temp元素在a数组中是否包含,包含返回true
public static boolean contain(int [] a,int temp) {
for(int i=0;i<=a.length-1;i++) {
if(a[i]==temp) {
return true;
}
}
return false;
}
}
4.日期
(1) 获取日历
package javase.jingjie.RiQi;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class RiLi {
public static void main(String[] args) throws Exception{
// 获取系统当前日历
Calendar c =Calendar.getInstance();
//查看当前日历的“星期几”
int i=c.get(Calendar.DAY_OF_WEEK);
//int i=c.get(7);
System.out.println(i);//7 周六是第7天
System.out.println(c.get(Calendar.DAY_OF_MONTH));//28 今天是28号
//获取2008 8 8是星期几?
//获取2008 8 8的日历
String strTime="2008,08,08";
Date d=new SimpleDateFormat("yyyy,MM,dd").parse(strTime);
//该日历就是2008 8 8的日历
c.setTime(d);//获取指定日期赋值给当前
//获取星期几
System.out.println(c.get(Calendar.DAY_OF_WEEK));//6, 2008 08 08 是星期六
}
}
(2) 获取系统当前时间
package javase.jingjie.RiQi;
/**
* 获取系统当前时间
* */
import java.util.Date;
import java.text.SimpleDateFormat;
public class RiQi01 {
public static void main(String[] args) {
// 获取系统当前时间
Date nowTime=new Date();
System.out.println(nowTime);//Thu Sep 26 16:50:10 CST 2019
//以上程序说明java.util.Date已经重写了Object中的toString方法
//只不过重写的结果对于中国人讲不太容易理解,所以引入“格式化”日期
/*java.util.Date-->String
* 日期格式:y 年
* M 月
* d 日
* H 小时
* m 分
* s 秒
* S 毫秒
* */
//1.创建日期格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS");
//2.开始格式化(Date-->String)
String strTime=sdf.format(nowTime);//format方法是在SimpleDateFormat类中
System.out.println(strTime);//2019年09月26日 16:50:10:776
//获取自1970年1月1日 00时00分00秒 000毫秒 到当前的毫秒数
long now =System.currentTimeMillis();
System.out.println(now);//1569488057979
}
}
(3) 获取特定日期
/**
* 获取特定日期
* */
import java.util.Date;
import java.text.SimpleDateFormat;
public class RiQi02 {
public static void main(String[] args) throws Exception{
String strTime="2008年08月08日 08:08:08 888";
//将String日期转化成日期类型Date, String-->Date
//1.创建日期格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS");//格式不能随便,应该和上面的字符串格式相同
//2.将字符串转换成日期类型用parse方法,
//将日期转换成字符串用format方法
Date t=sdf.parse(strTime);
System.out.println(t);//2008年08月08日 08:08:08 888
}
}
(4) 获取系统当前时间
package javase.jingjie.RiQi;
/**
* Date d=new Date();获取系统当前时间.
* Date d=new Date(long millis);
* */
import java.util.Date;
import java.text.SimpleDateFormat;
public class RiQi03 {
public static void main(String[] args) {
// 1000是自1970-1-1 00:00:00 000的毫秒数
Date t1=new Date(1000);
//Date-->String
SimpleDateFormat sdf=new SimpleDateFormat("yyyy,MM,dd HH:mm:ss:sss");
//北京东八区
System.out.println(sdf.format(t1));//1970,01,01 08:00:01:001
//获取当前系统的前10分钟的时间
Date t2=new Date(System.currentTimeMillis()-1000*60*10);
System.out.println(sdf.format(t2));//2019,09,28 16:49:25:025, 系统的前10分钟时间,上下对比差10分钟
System.out.println(sdf.format(new Date()));//2019,09,28 16:59:25:025, 系统的当前时间
}
}
5. 数字
(1)数字格式化
package javase.jingjie.ShuZi;
/**
* 关于数字格式化:java.text.DecimalFormat;
*
* 数字格式元素:
* # 任意数字
* , 千分位
* . 小数点
* 0 不够补0
* */
import java.text.DecimalFormat;
public class ShuZi01 {
public static void main(String[] args) {
// 1.创建数字格式化对象
//需求:加入千分位
DecimalFormat df= new DecimalFormat("###,###");
//开始格式化, Number-->String
System.out.println(df.format(1234567));//1,234,567
//需求:加入千分位,保留2位小数
DecimalFormat df1=new DecimalFormat("###,###.##"); System.out.println(df1.format(1234567.1234));//1,234,567.12
//需求:加入千分位,保留4位小数,不够补0
DecimalFormat df2=new DecimalFormat("###,###.0000"); System.out.println(df2.format(1234567.1234));//1,234,567.1234
}
}
(2) 大数据:BigDecimal
package javase.jingjie.ShuZi;
import java.math.BigDecimal;
/**
* java.math.BigDecimal;
* 该类型的数据精确度极高
* */
public class ShuZi02 {
public static void main(String[] args) {
// 创建大数据
BigDecimal v1=new BigDecimal(12);
BigDecimal v2=new BigDecimal(34.5);
//做加法运算, v1+v2,记住两个引用类型不能做加法运算
BigDecimal v3=v1.add(v2);
System.out.println(v3);//46.5
}
}
6. 栈
package javase.jingjie.栈;
/**
* 结果:User[name=刘德华,age=23]
User[name=胡歌,age=22]
User[name=成龙,age=21]
User[name=JACK,age=20]
* */
public class Test {
public static void main(String[] args) {
Stack s=new Stack();
User u1=new User("JACK",20);
User u2=new User("成龙",21);
User u3=new User("胡歌",22);
User u4=new User("刘德华",23);
User u5=new User("古天乐",24);
try {//压栈
s.push(u1);
s.push(u2);
s.push(u3);
s.push(u4);
//s.push(u5);
}catch(StackOperationException e) {
e.printStackTrace();
}
try {
//弹
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
//System.out.println(s.pop());
}catch(StackOperationException e) {
e.printStackTrace();
}
}
}
class User{
String name;
int age;
User(String name,int age){
this.name=name;
this.age=age;
}
public String toString() {
return "User[name="+name+",age="+age+"]";
}
}
package javase.jingjie.栈;
//先进后出
public class Stack {
//使用数组存储数据,栈可以存储多个引用类型的元素
Object[] elements;
//指向栈顶元素上方的一个帧
int index;
//栈默认的初始化容量是5
//Constructor
Stack(){
this(5);
}
Stack(int max){
elements=new Object[max];
}
//栈应该对外提供一个压栈的方法
public void push (Object element)throws StackOperationException{
/*elements[index]=element;
index++;*/
if(index==elements.length) {
//异常
throw new StackOperationException("栈已满");
}
elements[index++]=element;
}
//栈应该对外提供一个弹栈的方法
public Object pop() throws StackOperationException{
/*index--;
return elements[index];*/
if(index==0) {
throw new StackOperationException("栈已空");
}
return elements[--index];
}
}
package javase.jingjie.栈;
public class StackOperationException extends Exception{
public StackOperationException() {}
public StackOperationException(String msg) {
super(msg);
}
}
7. 键盘输入
package javase.jingjie.键盘键入;
//如何接收用户的键盘输入
import java.util.Scanner;
public class shuru {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
//程序执行到此处,停下来,等待用户输入
String userInput =s.next();
System.out.println("您输入了:"+userInput);
}
}