⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 day17.txt

📁 达内科技上课的 java学习笔记 分为18天学完
💻 TXT
字号:
               CoreJava(day17)   2007-12-25  -- 李艳

5.0的新特性:

	泛型:

	     形式:<这里的内容不确定>

	     优点:

		1、类--->不想限定某属性的类型,泛型可实现     (类一级的泛型:课堂代码:TestG.java)
			
			变量泛型==变量类型可变

		2、泛型不需要Cast(强制类型转换):增强了java的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。
	

	     注意:1、泛型不支持直接去new对象
		   2、泛型不支持多态,既不支持左右边的多态,左边右边必须类型一致
		   3、静态属性不能是泛型的,静态方法不能直接使用泛型。
	
		方法级的泛型   (课堂代码:TestMethodG.java)
			
			public static <E> void test(E e){
			    //与下面代码不一样的是这里不是多态,不需要强制类型转换
				System.out.println(e);
			}
			//在编译时,此方法与上边的方法被认为是一样的,所以不能同时存在。但若使用这个方法,则在运行时是需要强制类型转换的
			public static void test(Object e){
			}
		   方法级的泛型可以在静态中使用
		
	    泛型的通配: (课堂代码: TestAllG.java)

		  (1)<?> 代表所有类,仅用于传参,             			 <E>     可用于其它地方
		  (2)<? extends 类>  代表本类以及子类,  		     <E extends 类> 可用于其它地方
		  (3)<? super 类>  代表本类及本类的父类,?支持super,              E无对应的,E不支持super

		注意:多重继承可以这样使用  public static <E extends Number & Serializable> void test(E e){}
		      (课堂代码:MyClass.java)
			
			//可以用泛型整合多个接口/类的方法(增强了多态)
			public static <E extends In1&In2> void test(E e){
				e.test1();
				e.test2();
			}
			
	泛型与异常:

		(1)泛型可以extends Exception,但异常类却不支持泛型。   (课堂代码:TestExceptionG.java,MyException.java)
		(2)泛型可以throws,但不支持catch
		
	好处:(1)不需要cast(强制类型转换)
	      (2)可以限定集合中元素类型
	      (3)可以增强多态(继承多于接口而无需写继承类)
	      (4)保证参数有效
	      
	不可用:
		(1)catch的括号中是不可用的
		(2)new (不可用); 不能new一个泛型
		(3)数组不可用泛型限定。例:E[] e=new E[10];//数组不能使用,无法初始化。
		(4)static属性不能用泛型,静态的方法在返回值前可以用泛型,其它地方不可以用泛型。
		(5)异常的子类中不可用(Throwable的子类)
		(6)简单类型不可用。例:List<int> list;这是错误的
		
元数据(注释):

	用于描述数据的数据		
	java.lang.annotation.Annotation 接口

	java.lang.annotation.* +反射机制=元数据机制
		(1)可以帮助编译器更好的工作
		(2)完成参数配置(xml文件)
	
	元数据与类代码一体,不需要再导入其它东西
	xml配置,使代码分离,比较复杂的配置多用xml配置
	
	元数据是在2004.9推出,xml是在1998年推出的,EJB3.0-->2005年
	元数据的应用(会用)
	三个sun公司内嵌的元数据:
		@Override  方法覆盖    (课堂代码:TestStu.java)
		@SuppressWarnings(String) 取消警告
		@Deprecated  过时方法	

	自定义注释,说明(元数据) java.lang.annotation.Target
	
		
	1.标记注释(使用时不需要传值)
	@Override 用在覆盖方法前
	@Deprecated 用在方法声明前,声明此方法已过期

	2.单值注释(使用此注释时要传一个值)值可以是基本数据类型,String,枚举,以及它们的数组
	
	@注释名(prameter=10)
	int parameter
	特例:
	@注释名 (value “134” )

	@SuppressWarnings(value={“ddd”,”aaa”,”ccc”}) 
	@SuppressWarnings(value={"unchecked"})  //value可以省略,忽略警告
	3.普通注释(多值注释)
	(key1=value,……)

	4.自定义注释
	public  @interface Test{
	}

	 (1)new @interface(注释)可以有属性,类型为简单
	在自定义注释时,要用注释来注释(描述)注释。有四种元注释即注释的注释

	@Target(),用来描述(注释)注释所能够注释的程序员元素,描述这个注释将来用来注释什么。想使用Target必须导包java.lang.annotation.ElementType

	@Retention(),描述(注释)注释要保留多久。定义一个注释的信息会保留到什么时候
		SOURCE 被编译器丢弃的注释,自定义的注释不该写SOURCE
		CLASS 存在.class文件中,但在类加载时丢掉
		RUNTIME注释存进.class中,并在加载时也保留,一般情况下,自己写的注释,一定是RUNTIME
	
	@Inherited指示注释被自动继承,是一个标记注释

	@Documented 指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。 

	注释

	(1)new @interface(注释):可以有属性
		注释的属性类型可以是
			8种基本类型
			String
			Enum
			Annotation 注释对象,注释=接口
			以及它们的数组
	(2)为注释写注释:@Target,@Retertion(结合ElementType,RetentionPolicy)
	(3)注释的使用:@名字(属性...)
	(4)解析注释(用反射)
		Class.forName()
		getMethods(看情况)
		做是否有了判断(isAnnotationPresent)
		getAnnotation

并发线程池
	
	java.util.concurrent  并发
	java.util.concurrent.atomic  原子性(同步) 
	java.util.concurrent.locks  锁
	
	线程池--->池--->空间(池所用)---->内存

	重要的:java.util.concurrent包中
			public interface Executor  
			public interface ExecutorService extends Executor  可以终止线程,可以提供线程池
			public interface ScheduledExecutorService extends ExecutorService  可以计划做任务

			public class Executors extends Object 
			
			Callable---->Runnable
			call()----->run()
	增强之处:
		1、可获取信息:run()无返回值
		  	       call可返回任何对象
		2、run()不可抛出异常,call()可抛任何异常

	线程池编程:		
	 	Executors(入口)
			newFixedThreadPool(个数)
	 	得到ExecutorService(线程池)
			submit(Callable c) ,得到Future---->get,cancel

	java.util.concurrent.FutureTask<V>:在后台工作的类
	
	java.util.concurrent.Semaphore:用于计数的类
	
	java.util.concurrent.CountDownLatch:等待计数器。一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 
	
	
	原子性:当A改变时,B会被锁定
	
	java.util.concurrent.locks.Lock 
	java.util.concurrent.locks.ReentrantLock 读写锁	

	
core java 要掌握的:

	1、基本编码能力(调错,API,编程的思路)
	2、概念:
		面向对象三大特性:
			封装:私有化属性,提供公开的方法,在构造器中也要调用set方法,保证属性的有效和完整
			继承:类与类、类与接口单继承,接口与接口多继承
			多态:参数多态,类多态(父类可以指向自身,也可以指向子类)
			
		        重写:父类方法不能满足子类需要时重写
			重载:
		         
			super:  父类
			this: 本类	
		
	3、类库:
		国际化
		泛型
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -