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

📄 day11.txt

📁 达内科技上课的 java学习笔记 分为18天学完
💻 TXT
字号:
              CoreJava(day11) 2007-12-17   -- 李艳
复习:
	AWT,Swing是写用户图形界面的,但实际开发中90%都是用JSP写的。但Swing可以帮助我们理解OOAD的概念
	我们在这个地方讲了两个模式:模式就是A情况下使用B。
		1、观察者模式
				当A发生变化,需要B处理时,可以考虑是否使用。
				Observer-----B(处理者)
				Observable---A
		2、适配器模式
					
概念:
	类:描述现实事物(抽象描述)
	对象:类的个体
	实例:new过的对象(实例化)
	属性:描述这个类的(有用)特征
	方法:行为(大多会操作属性)
	构造:目标是构造对象
	
	面向对象的三大特性:
	封装:private 属性,set时限定,构造时要调用方法,内部类中也要调用set方法。好处是保证了属性的有效、安全。
		 封装的体现:集合
	继承:类extends类(是的关系)单继承,
				类implements接口(是的关系)多继承。
				接口extends 接口(是的关系)多继承。
				好处:
					1、代码复用
					2、可维护性、可扩展
					3、支持多态							
	多态:
		1、数字多态
		2、方法多态(重写、重载)
				重写:首先要有继承关系,父类方法不满足子类时需要重写,
						条件:相同的方法名,参数表,返回类型,访问权限不能更小,异常不能抛更大,final的不能重写,静态的方法只能用静态去重写。对抽象方法重写--我们也叫实现
				重载:同一类中(方法重载可以包括继承的方法),方法名同名,不同参数表,返回类型无关但最好相同。重载方便调用。
		3、参数多态(重要使用)
		4、类多态(接口)
		好处:
			1、参数传递更加灵活、方便
			2、多种设计模式依赖多态
			3、面向接口编程依赖多态
			4、多态是由具体到抽象的一个手段
		
		多态的体现:集合、接口	
		
		this:代表本类。
				用法:
						this.;  本类方法、属性(重名时)
						thsi(); 本类构造器第一行。调用本类其它构造器
		super:代表父类,(包括父类的父类)
				用法:
						super();用在本类构造器第一行,表示调用父类构造器
			
		先父后子,先this后super,先语句块后构造器,静态语句块 > 普通语句块
		
		static:静态,类共享
		final:不可改变,不能继承,例System,Math.
					final的属性不能二次赋值
		abstract:用于声明抽象类、抽象方法,可放在接口中。
				
		接口中的属性都是public static final
		接口中的方法都是public abstract
		
		父类方法-->子类重写:调用重写后的方法。
		
		在没有super时,有相同方法时只会调子类的方法,加super时相当于没有多态了。
		
		类库:Object:clone,equals,hashCode,toString,finalize
					String:字符串,不可改变
							indexOf,subString,split,matches,replaceAll
					StringBuffer:
					StringBuilder:
					封装类:转换用.TYPE(简单类型的类对象)
	  集合:对象集(可扩容),保存下多个对象。
	  			数组:包含简单类型
	  
	  	Set:add,remove,Iterator(或for--each),
	  	List:add,remove,get(或for--each,或Iterator)
	  	
	  反射:
	  		Class-->类对象
	  		Field-->属性
	  		Method--->方法
	  		Constructor-->构造
	  
	      作用:动态的生成对象,动态的执行方法
	   
	 大数值:java.Math.BigDecimal
	 			参数必须用String类型,商业开发需要精确计算时必须使用这个
	 			
新课:
	 
	 线程:
	 		进程的概念:
	 				进程是指在同一个操作系统(OS)中执行的子程序。
	 		多进程:同一个操作系统中执行的多个并行的子程序。
	 		线程:同一进程中执行的子程序流。
	 		多线程:同一个进程中执行的多个并行的子程序流。
	 		
	 	  多进程的好处:提高CPU的使用率。
	 	  多线程的好处:提高CPU的使用率。
	 	  时间片方式(主流):全称叫CPU时间片,指的是CPU的一段执行时间,时间片分配给进程/线程,时间很短但能做很多事情。
	 		                   有时间片的会抢占CPU,进程与进程抢,线程与线程抢。时间片用完了会再分。不管如何抢占,CPU的使用率也不会调到100%
	 		并发是针对的时间段。严格来说在一个时间点是无并发的。人所感受到的都是时间段
	 		
	 		线程与进程:
	 				多进程是独立的堆空间,独立的栈空间。进程与进程是互不影响的
	 				多线程是栈空间独立,堆空间共享。线程与线程是可以影响的。
	 				线程是由进程内部的一些顺序执行的代码组成的。
	 				没有进程不会有线程。一个进程可以有多个线程,有一个主线程,其它线程做为附加线程。
	 				
	 		JAVA中如何调用进程:(课堂代码:TestWinPro.java , TestLinPro.java)
	 				进程与操作系统相关,不能跨平台。JAVA中不推荐调进程。
	 				
	 				与进程相关的两个类:都在java.lang包中
	 							Runtime类(运行环境): exec()调用本地程序。
	 							Process:进程类,是exec()的返回类型。
	 							Runtime.getRuntime();返回与当前 Java 应用程序相关的运行时对象。
	 				
	 				线程模型:
	 						虚拟CPU(CPU时间片):Thead
	 						代码和数据由Runnable提供,run()运行代码,数据是子类属性
	 				
	 				写线程的方法:(课堂代码:TestThread.java,TestRunnable.java)
	 				     1、继承Thread 类:
	 				     				1、extends Thead
	 				     				2、重写run()方法
	 				     				3、new 本类.start();
	 				     		好处:编写简单,可读性好
	 				     2、实现Runnable接口
	 				     				1、implements Runnable
	 				     				2、重写run()方法
	 				     				3、new 本类,new Thread(本类对象)
	 				     				4、Thread对象.start();
	 				     		好处:保留了类继承,代码和逻辑分离,便于实现多线程。	 				     				
	 				 run()和start()是不一样的:
	 				 				run()叫线程体方法,自身其实就是普通方法,run()不会启动线程
	 				 				start()叫线程启动的方法,向线程调度来说明当前线程ready(准备好了)。而不是正在执行的状态。
	 				 					 				     
	 				优先级:1--10,1最小,10最大,在某些操作系统中优先级会失效的。
	 				        小优先级代表时间片小。
	 				        
	 				守护线程依赖于其它线程
	 				join使自身加入主线程
	 				
	 			线程中几个重要的方法:	(课堂代码:TestDaemon.java,TestSleep.java,TestJoin.java)
	 				Thread.currentThread()取当前线程(实现接口方式有时用这个)
	 				sleep():暂停线程,本线程不会抢,除非sleep运行完,这个是静态方法。自己让出CPU,其它的来抢。
	 				yield():暂停线程,给本类或>=本类优先级的。只给优先级高的让,一般优先级低的抢不到
	 				join():让本线程加入主线程。在线程内部、程序依然是顺序执行的,乱序体现在不同线程。
	 							tj.start();
								tj.join();要按这个顺序执行,若把join放在前面是无意义的。
	 				setDaemon(true)后台/守护线程  
	 				
	  线程状态图:
		 				
    ▲ 初始状态              ▲阻塞状态               ▲终止状态
        \                 /           ┍ 1等待输入     ┓
         \               /sleep时间到    \ 2sleep     /
          \start        /                 \ 3join    /stop
           \           /                   \        /
            ┙       ┕                     \      /
         ▲ 可运行状态  _ _ _ OS选中 _ _ _\   ▲运行状态
          (只缺CPU)    \  CPU到期或调用yield
                    ┍                        /    \
                      \                      /      \wait
                       \        Synchronized/        \
                        \                  /          \
                         \                /            \
                          \              /              \
                           \           ┕               ┙
                             ▲ 锁池状态 <------ ▲等待队列
                                          notify/notifyall
	 				
	 						
	 						
	 		
	 		

⌨️ 快捷键说明

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