慕课网3 异常处理 字符串 Math类 Calendar类 data simpleDateFormat类 包装类

原创 2015年11月19日 22:39:21

1.异常与异常处理

1-1   异常简介

                                                 Throwable

 

                          Error                                    exception

 


     虚拟机错误,线程死锁                       runtimeException(非检查异常)                   检查异常

 

                                                       空指针  数组下标越界  算术   类型转换              文件SQL


1-2 使用try ..catch …finally实现异常处理

Try{

}catch(Exception e){

}catch(Exception w){  //不同类型异常,先子后父

}finally{
//最终必须执行的一些代码块

}

…..

如果前面没有return ,则继续执行后面代码

注:try语句不可以独立存在,必须与catch或finally同存

1-5 异常抛出以及自定义异常

1.      class 自定义异常类extends 异常类型

2.      关键字 throw -----将产生的异常抛出(动作)

       throws------声明要抛出何种类型的异常(声明)

Public void 方法名(参数列表) throws 异常列表{
     //throw new Exception();

例如: public void divide(int one,int two) throws exception{
         if(two==0)

                    Throw new exception();  //抛出异常

}

Public void compute{     //捕获处理
             try{

Divide(5,0);

}catch(Exception e){

    System.out.println(e.message);

}

}

或者   将异常类型抛出向上进行处理

Public void compute throws Exception{

     Divide(5,0);

}

3.      printstackTrace()打印输出,但尽量去处理

4.      尽量添加finally释放占用的资源

 

2.字符串

2-1 字符串的不变性

String对象创建后不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同

2-3String类的常用方法

 

Int length()

Int indexOf(char ch)

Int indexOf(String str)

Int lastIndexOf(char ch)

Int lastIndexOf(String str)

String substring(int beginIndex)

String substring(int beginIndex,int endIndex)

String trim()  //返回去除前后空格的字符串

Boolean equals(Object obj)

String toUpperCase()

String toLowerCase()

Char charAt(int index)

String[] split(String regex,int limit)  // separator 
可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。limit
可选项。该值用来限制返回数组中的元素个数。

Byte[] bytes //将该字符串转换为byte数组

 

2-5 StringBuilder类

String 不变存储

StringBuilder  线程不安全 ,性能略好

StringBuffer 线程安全

1.      StringBuilder sb=newStringBuilder(“hello”,25)  ;//可以扩大最大到25个空白

//sb.capacity=25;

2.      sb.Append(“what a day”);

3.      sb.Inset(6,”beauty”);  //插入到第六个位置

4.      sb.Remove(5,7);     //从指定位置的指定数量删除

5.      sb.Repalce(‘!’,”?”);   //查找所有的’!’,并用’?’替换

6.      String toString() ;  //将StringBuilder对象转换成String对象

 

3常用类

3-1  包装类

基本数据类型

对应的包装类型

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Char

boolean

Boolean

 

Interger

构造方法: Interger(int value) ;   //Integer i1=new Integer(8); 

                 Integer(String s) ;    //Integer s2=new Integer(“8”);

常用方法:

          bytebyteValue();    //Integer->byte类型

           double  doubleValue(); //doubles3=i1.doubleValue();

         floatfloatValue();

         intintValue();

         longlongValue();

        staticint parseInt(String s); //int a=Integer.parseInt(“ff”,16);

        StringtoString();

        staticInteger valueOf(String s);

3-2 基本类型和包装类之间的转换

1.装箱:基本类型->包装类

       int I;

              Integer x=new Integer(i);  //手动装箱

             Integer y=I;  //自动装箱

2.拆箱:包装类对象->基本类型的值

        Integerj=new Integer(8);

          int m=j.intValue();  //手动拆箱

        intn=j; //自动拆箱为int类型

3-4 基本类型和字符串之间的转换

1.将基本类型->字符串

   int c=10;

    String s1=Integer.toString(c);

    String s2=String.valueOf(c);

    String s3=""+c;

2.指定字符串->基本类型

   String str="8";

    int d=Integer.valueOf(str);

    int e=Integer.parseInt(str);

3-6 使用data和simpleDateFormat类表示时间

1.使用Format()方式  日期->文本

       Date d=new Date();

       SimpleDateFormatsdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       Stringtoday=sdf.format(d);    //2015-12-01 21:34:03

       System.out.println(today);     

2.使用parse()方法  文本->日期

   String day="2014021410:3:25";

    SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd HH:mm:ss");

    Date date=df.parse(day);

    System.out.print(date);    //Fri Feb14 10:03:25 CST 2014  

使用Date类需要导入java.util包,使用SimpleDateFormat需要导入java.text包

使用Date类需要导入java.util包,使用simpleDateFormat需要导入java.text包

3-7  Calendar类的应用

    1.  Calendar c=Calendar.getInstance();

       int year=c.get(Calendar.YEAR);

       int month=c.get(Calendar.MONTH);//0表示1月份,故加1

       int day=c.get(Calendar.DAY_OF_MONTH);

       int hour=c.get(Calendar.HOUR_OF_DAY);

       int minute=c.get(Calendar.MINUTE);

       int second=c.get(Calendar.SECOND);

       System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second); //2015-11-216:54:59

      

    2.  Date date=c.getTime();

       Long time=c.getTimeInMillis();    

System.out.println(time); //1449046499171

3-8 使用Math类操作数据

java.lang 所有方法都是静态方法  ,Math.函数名()

       double a=11.9;

       long l=Math.round(a);   //四舍五入 12

       doubled=Math.floor(a); //返回小于参数的最大整数 11.0

       doubled2=Math.ceil(a); //返回大于参数的最大整数 12.0

       double r=Math.random();//返回[0,1]之间的随机浮点数



项目实战  手牌游戏 CardGame


1.Card

package comimooc;

public class Card implements Comparable<Card>{
	String id;
	String type;
	Integer index;
	public Card(){
		
	}
	public Card(int index,String type,String id){
		this.index=index;
		this.id=id;
		this.type=type;
	}
	
	@Override
	public int compareTo(Card o) {
		// TODO Auto-generated method stub
		
		return this.index.compareTo(o.index);
	}
}

2.Player

package comimooc;

import java.util.ArrayList;
import java.util.List;

public class Player {
	public int id;
	public String name;
	List<Card> cards;
	Player( int id,String name){
		this.id=id;
		this.name=name;
		this.cards=new ArrayList<Card>();
	}

}

3.Game

package comimooc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

public class Game {
	List<Card> cards;
	Map<Integer,Player> players;
	Set<Integer> keySet;
	Scanner input;
	public Game(){
		this.cards=new ArrayList<Card>();		
		this.players=new HashMap<Integer,Player>();
		this.keySet=players.keySet();
		this.input=new Scanner(System.in);
	}
	
	public void addCard(){
		System.out.println("-------创建扑克牌-------");
		String[] types={"方片","梅花","黑桃","红桃"};
		for(int i=0;i<4;i++){
			for(int j=0;j<13;j++){
				cards.add(new Card(i*13+j,types[i],Integer.toString(j)));
			}
		}
		System.out.print("-------扑克牌创建成功-------\n为:[");
		for(Card card:cards){
			System.out.print(card.type+card.id+", ");
		}
	}
	
	public void  shuffleCard(){
		System.out.println("\n-------开始洗牌-------");
		Collections.shuffle(cards);		
		System.out.println("-------洗牌结束-------");
	}
	
	public void createPlayer(){
		System.out.println("-------创建玩家-------");		
		for(int i=0;i<2;){
			System.out.println("-------请输入第"+(i+1)+"位玩家的ID和姓名-------");
			System.out.println("-------输入ID-------");
			Integer id=input.nextInt();
			if(players.containsKey(id)==true){
				System.out.println("-------ID已存在,请重新输入-------");
				continue;
			}else{
				System.out.println("-------输入姓名-------");
				String name=input.next();
				players.put(id, new Player(id,name));
				i++;
			}
		}
		Set<Integer> keySet=players.keySet();
		for(Integer id:keySet){
			System.out.println("-----欢迎玩家: "+players.get(id).name);	
		}	
	}
	
	public void dealCards(){
		System.out.println("-------开始发牌-------");
		Random random=new Random();
		
		Integer[] cardIndex = new Integer[2];
		for(int i=0;i<2;i++){
			boolean flag=true;
			for(int j=0;j<2;){
				cardIndex[j]=random.nextInt(cards.size());			
				for(Integer id:keySet){
					if(players.get(id).cards.contains(cards.get(cardIndex[j]))){
						flag=false;
						break;
					}
				}
				if(flag==true)
					j++;
			}
			for(Integer id:keySet){
					players.get(id).cards.add(cards.get(cardIndex[id-1]));
					System.out.println("----玩家: "+players.get(id).name+"-拿牌");	
			}
		}
		System.out.println("-------发牌结束-------");
	}
	
	public void playGame(){
		Set<Integer> keySet=players.keySet();
		Card[] cardsMax=new Card[2];
		for(Integer id:keySet){
			Collections.sort(players.get(id).cards);
			System.out.println("玩家"+players.get(id).name+"最大的手牌为:  "+players.get(id).cards.get(0).type+players.get(id).cards.get(0).id);
			cardsMax[id-1]=players.get(id).cards.get(0);
		}
		
		if(cardsMax[0].index > cardsMax[1].index){
			System.out.println(players.get(1).name+"赢了");
		}else{
			System.out.println(players.get(2).name+"赢了");
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Game game=new Game();
		game.addCard();
		game.shuffleCard();
		game.createPlayer();
		game.dealCards();
		game.playGame();
	}

}



JAVA——(3)常用类:Math、Scanner、String、StringBuffer、Array、Calendar、Date、Character、包装类(Intger)

一、Math---是针对数学进行操作的类 没有构造方法,因为它的成员都是静态的 A:绝对值:public static int abs(int a) B:向上取整: public static dou...

Java学习--(十一)包装类,Date,SimpleDateFormat,Calendar类的使用

1.包装类(Wrapper Class)的使用 以Integer为例,首先是转换, xxxValue()方法返回的是xxx类型的值,比如byteValue(),就是将Integer转为byte类型...

达内课程-基本类型包装类Math、SimpleDateFormat、Date、DecimalFormat方法使用

达内课程-基本类型包装类Math、SimpleDateFormat、Date、DecimalFormat方法使用

【Date、DateFormat、Calendar、Math、System、包装类、正则表达式】常用API

主要总结了一下基础的Java中日期类(Date)常用的格式转换方法以及各工具类的常用API...

JavaEE常用API【Date、DateFormat、Calendar、Math、System、包装类、正则表达式】总结

Date、DateFormat、Calendar、Math、System、包装类、正则表达式个人总结

day06-常用API【Date、DateFormat、Calendar、Math、System、包装类、正则表达式】

1.Date类是日期类,用来表示日期类型的时间。 2017年10月18日 09时07分50秒 500ss构造方法: Date():创建当前的时间对象; Date(long date):...

【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

一. Objective-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber :  -- 通用包装...
  • sun2728
  • sun2728
  • 2015年10月08日 16:14
  • 603

实训java第十二课 时间 日期 Date Calendar DateFormat StringBuffer StringBuilder String正则表达式 包装类

package com.tarena.day12; import java.text.DateFormat; import java.text.ParseException; import ...

java常用类库续1(日期操作类Date、Calendar、DateFormat、SimpleDateFormat、Math与Random类)

日期操作类(Date、Calendar) Date类 Date类是一个比较常用的类,但是其操作的日期格式会有一些不符合个人的要求,而如果想进一步取得自己想要的时间,则可以使用Calendar类。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:慕课网3 异常处理 字符串 Math类 Calendar类 data simpleDateFormat类 包装类
举报原因:
原因补充:

(最多只允许输入30个字)