public static void main(String[] args) {
List
Object obj = list.get(0);
//String s = list.get(1);//错误的,这个时候会进行 类型安全检查,Integer不能转换为
String类型,出现下面的异常:// //Exception in thread \java.lang.Error: Unresolved compilation problem: }
}
//Type mismatch: cannot convert from Integer to String
从上面的例题中可以看出,泛型可以解决类型的安全性问题,其主要原理是在类声明时过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类的声明或实例化时只要指定好需要的类型即可。
4.2泛型的使用
泛型对象的定义:
类名称<具体类> 对象名称 = new 类名称<具体类>();
Shop
package com.tarena.day15; public class ShopDemo{ }
class Shop
{ }
class Pet{
P product; public Shop(){} public Shop( P p){ }
public P buy(){ }
return product; this.product = p;
public static void main(String[] args){ }
Shop
}
String name;
public Pet(String name){ }
public String buy(){ }
return name; this.name = name;
class Toy{ }
String name;
public Toy(String name){
this.name = name; }
public String buy(){ }
return name;
泛型类定义:
class Shop
{//这个里面也可以指定多个泛型标识:
,泛型的标识没有限定的,可以是任意的 }
//标识符号
P product;//此变量的类型由外部决定 public Shop(){ }
public Shop( P p){ //里面的参数类型由外部决定 this.product = p; }
public P buy(){ //返回值类型外部决定 return product; }
第五章 正则表达式
5.1 正则表达式的应用
验证邮箱地址是否正确:
package com.summary.regex; import java.util.Scanner;
import java.util.regex.Pattern; import java.util.regex.Matcher; public class RegexDemo {
}
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
//Pattern 正则表达式的编译表示形式
Pattern pattern = Pattern.compile(\9]{0,}\\\\.[a-zA-Z]{2,3}\);
System.out.println(\请输入邮箱地址:\ );
//Matcher 通过解释 Pattern 对字符序列执行匹配操作的引擎
//通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它 //执行三种不同的匹配操作:
//matches 方法尝试将整个输入序列与该模式匹配。 //lookingAt 尝试将输入序列从头开始与该模式匹配。
//find 方法扫描输入序列以查找与该模式匹配的下一个子序列。 //每个方法都返回一个表示成功或失败的布尔值。
Matcher match = pattern.matcher(console.nextLine()); boolean ismatched = match.matches(); if(ismatched){ }
System.out.println(\你输入的邮箱是合法的!\ ); }else{
System.out.println(\你输入的邮箱是不合法的!\ ); }
java中的正则表达式
Pattern pattern = Pattern.compile(\ {0,}\\\\@[a-zA-Z0-9]{0,}\\\\.[a-zA-Z]{2,3}\);
System.out.println(\请输入邮箱地址:\ );
Matcher match = pattern.matcher(console.nextLine()); boolean ismatched = match.matches();
第六章 异常
6.1 Exception
是所有异常类的父类,它继承自Throwable。 异常分为非检查异常和检查异常
RuntimeException: 非检查异常,是在java 虚拟机正常运行时抛出的异常的类的超类。非检查异常无需用throws在方法后面进行声明。你可以用try catch语句捕捉,也可以不用。
检查异常:就是除RuntimeException异常及子类以外所有异常类,这类异常需要用throws在方法
后面进行声明或用try catch语句进行捕获。它在程序被编译时,系统就会检查这种异常。如果在程序中不处理这类异常,编译就不会通过。这类异常是必须做相应处理的。
在线程的run方法里面可以申明或抛出非检查异常,而不能申明检查异常,能抛出检查异常(run方法中必须有try...catch块进行处理,且不能用申明异常的方式抛给它的 调用者)。
class ThreadDemo extends Thread{ }
int a = 4;
public void run()throws RuntimeException{ }
if(a > 3)
try {
throw new Exception(\大于4!\ );//这个异常必须用try...catch块 //进行处理 } catch (Exception e) { }
e.printStackTrace();
throws Exception:跟在方法的后面,是进行异常声明的,表示这个方法里面
可能有异常,也可能没有。如果这个方法里面产生了异常,有try catch 语句块就交给它处理,否则,交给throws Exception 来处理,它再交给它的调用者去处理。
throw new Exception():抛出异常对象(实例)
try{
//在运行过程中可能抛出异常的语句块
}catch(Exception e){//捕获异常
//产生异常时的处理代码写在这里面 e.printStackTrace();
}finally{//不管是否产生了异常,这个里面的语句都会执行 }
System.out.println(\你被out了!\
6.2自定义异常
public class MyException extends Exception{
public MyException(String message){
super(message);//调用父类的构造方法。
} }
如何抛出自定义异常:
public class TestMyException{
public static void main(String[] args){ int a = 2; try{
if( a > 0){ //假如a大于0,就抛出异常
throw new MyException(\出错啦!\
}
}catch(MyException e){
e.printStackTrace();//这个地方错误提示在正式编程中应
该把设置的人性化些。
} } }
6.3异常的限制
覆盖一个方法时,只能产生已在方法的父类中定义的异常。这是一个重要的限制,因为它意味着与父类协同工作的代码也会自动应用于从父类派生的任何对象(当然,这属于基本的OOP概念),其中包括异常。 示例:
package com.summary.exception;
import java.io.FileNotFoundException; import java.io.IOException;
public class ExceptionDemo3 { }
class A{ }
class B extends A{
// public void test() throws Exception{}//错误,子类方法后面声明的异常必须是所覆盖的父类
public void test() throws IOException{} public static void main(String[] args) {}
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库corejava学习总结(7)在线全文阅读。
相关推荐: