- 博客(119)
- 资源 (2)
- 收藏
- 关注
原创 第二章--Java泛型 第三节--泛型类型限定
泛型类型限定(1):泛型:编写的代码可以被很多不同类型的对象所重用特定场合下,需要对泛型的类型做一定的限制(要有某些特定方法,或者说它必须实现什么接口)T... 表示一个不定项参数,其本质是一个T类型的数组泛型类型限定(2):泛型限定语法(对T的类型做一定的限制)---- 比如<T extends Comparable> 约定T必须是Comparable(是个接口,这里也用extends)的子类---- 使用关键字extends固定,后面可以多个接口或类(最多只能一个
2020-09-08 16:05:56
905
原创 第二章--Java泛型 第二节--自定义泛型设计
泛型泛型:编写的代码可以被很多不同类型的对象所重用,可以分为三种:(1)泛型类:ArrayList,HashSet,HashMap等(2)泛型方法:Collections.binarySearch,Arrays.sort等(3)泛型接口:List,Iterator等这些类是JDK提供给我们的,我们能够使用的泛型类。那么如何自己设计出相应的泛型类、泛型方法和泛型接口自定义泛型(1):泛型类泛型类:---- 具有泛型变量的类(类里面至少有一个成员变量是泛型变量)----
2020-09-06 21:02:45
380
原创 第二章--Java泛型 第一节--泛型入门
问题:集合:用于存放多个(不同类型)的对象---- 容易出现转型错误 ClassCastException上面的ArrayList对象没有限定放什么类型的数据,所以我们就往里面放东西了(int型和字符串)解决方法:集合:存放多个对象(限定为一种类型)---- 不需要转型,没有转型错误泛型(1):泛型:Generic Programming,JDK1.5推出的特性,带<>的类型限定语句是Java里面的一个新的特性作用:编写的代码可以被很多不同类型的对象所重
2020-09-06 16:09:35
263
原创 第五章--Java多线程和并发编程 第五节--Java多线程管理
多线程管理(4):----线程被动地暂停和终止(自己wait了,自己不能解脱,非要得到别的线程notify,才可以解脱)依靠别的线程来拯救自己没有及时释放资源(比如打开了一个文件,拿着一个锁对象,别的线程是拿不到这些资源的)----希望线程能够主动暂停和终止定期监测共享变量(别人需要我做什么,他可以把值放在共享变量上,我去定期监测,我根据共享变量的变化做动作)如果需要暂停或者终止,先释放资源,再主动做动作暂停:Thread.sleep(),休眠终止:run方法结束,线程终止
2020-09-05 15:41:40
125
原创 第五章--Java多线程和并发编程 第四节--Java多线程管理
多线程管理(1):线程类:通过继承Thread或实现Runnable通过start方法,调用run方法,run方法工作线程run结束后,线程退出粗粒度:子线程与子线程之间、和main线程之间缺乏同步细粒度:线程之间有同步协作(让线程等待、线程发通知 / 唤醒线程、终止某个线程)多线程管理(2):线程的全部状态:---- NEW:刚刚创建(new),当一个线程对象被new出来的时候,只是在内存里占据一定空间,但是没有被运行起来,因为start方法还没有启动---- RU
2020-09-04 11:09:13
141
原创 第五章--Java多线程和并发编程 第三节--Java多线程信息共享
多线程信息共享(1)线程类:---- 通过继承Thread或实现Runnable---- 通过start方法,调用run方法,run方法工作---- 线程run结束之后,线程退出粗粒度:子线程与子线程之间,子线程和main线程之间缺乏交流(之前的多线程就是一中粗粒度的执行模式)细粒度:线程之间有信息交流通讯(细粒度的编程模式)对于细粒度的执行模式,需要注意:(1)可以通过共享变量达到信息共享(2)JDK原生库暂时不支持点对点发送消息(类似MPI并行库直接发送消息)MP
2020-08-25 16:32:39
106
原创 第五章--Java多线程和并发编程 第二节--Java多线程实现
Java多线程创建的两种方法:(1)java.lang.Thread:线程继承Thread类,实现run方法(2)java.lang.Runnable接口:线程实现Runnable接口,实现run方法注意:Java中有四个主要接口:Clonable,用于对象克隆Comparable,用于对象比较Serializable,用于对象序列化Runnable,用于对象线程化(让一个类具有线程化的能力)Java多线程启动:---- start方法,会自动以新进程调用run方
2020-08-23 23:14:23
112
原创 第五章--Java多线程和并发编程 第一节--多进程和多线程简介
多进程概念(1):----当前的操作系统都是多任务OS(在windows上同时写着文档,听着音乐,聊着QQ,同时打开好几个应用程序)----每个独立执行的任务就是一个进程----OS将时间划分为多个时间片(每个时间片很短,可能只有几个纳秒几个微秒)----每个时间片内将CPU分配给某一个任务,时间片结束,CPU将自动回收,再分配给另外任务。从外部看,所有任务是同时在执行(音乐一直在放,QQ一直在接收消息)。但是在CPU上,任务是按照串行顺序依次运行(假设在单核CPU上运行,CPU一直在工作,
2020-08-22 23:28:22
153
原创 第十章--Java数据结构 第六节--工具类
(1)JCF的工具类:JCF提供了很多数据结构,除了这些数据结构,还提供了两种工具类----工具类不存储数据,而是在数据容器上,实现高效操作(主要是排序操作和搜索操作)---- Arrays类和 Collections类Arrays:处理对象是数组----排序:对数组排序,sort / parallelSort----查找:从数组中查找一个元素,binarySearch----批量拷贝:从源数组批量复制元素到目标数组,copyOf----批量赋值:对数组进行批量赋值,fill
2020-08-16 16:23:46
154
原创 第十章--Java数据结构 第五节--映射Map
映射(1)----Map映射数学定义:两个集合之间的元素对应关系一个输入对应到一个输出{ 1,张三},{2,李四},{Key,Value},键值对,K-V对----Java中的Map(1)Hashtable:同步,性能比较慢,适合处理数据量小(2)HashMap:不支持同步,快,数据量大(3)Properties:同步,文件形式存储的,数据量小映射(2):Hashtable---- K-V对,K和V都不允许为null----同步,多线程安全----无序的-
2020-08-15 23:37:11
191
原创 第十章--Java数据结构 第四节--集合Set
集合(1):集合Set的三个性质:(1)确定性:对任意对象都能判定它是否属于某一个集合(2)互异性:集合内每个元素都是不相同的,注意是内容互异的(比如说)
2020-08-14 23:29:38
148
原创 第十章--Java数据结构 第三节--列表List
List(1):----List:列表有序的Collection允许有重复的元素,也允许嵌套举个例子:{ 1, 2, 4, { 5, 2 }, 1, 3 }----List主要实现有三个类:(1)ArrayList (非同步的)(2)LinkedList (非同步的)(3)Vector(同步的)List(2): ArrayList----以数组实现的列表,不支持同步----利用索引位置可以快速定位访问----不适合指定位置的插入、删除操作(大量的数据后移..
2020-08-11 23:16:05
206
原创 第十章--Java数据结构 第二节--JCF
JCF(1):----容器:能够存放数据的空间结构(1)数组 / 多维数组,只能线性存放(2)列表 / 散列集 / 树 / ......----容器框架:为表示和操作容器而规定的一种标准体系结构(简单说,有一些容器,并且在其之上有算法实现)(1)对外的接口:容器中所能存放的抽象数据类型(2)接口的具体实现:可以复用的数据结构(3)算法:对数据的查找和排序----容器框架的优点:提高数据存取效率,避免程序员重复劳动----C++的STL(标准模板库),Java的JCFJ
2020-08-10 22:59:33
258
原创 第十章--Java数据结构 第一节--数组
数组(1):数组是一个存放多个数据的容器----数据是同一种类型----所有的数据是线性规则排列----可通过位置索引来快速定位访问数据----需要明确容器的长度数组(2):Java数组定义和初始化数组(3):数组索引----数组的length属性标识数组的长度----从0开始,到length-1---- int[] a = new int[5] ; // a[0] ~ a[4] , not a[5]----数组不能越界访问,否则会报Arr...
2020-08-09 23:19:45
103
原创 第九章 --Java异常和异常处理 第三节--自定义异常
自定义异常(1):----Exception类是所有异常的父类----Exception继承自java.lang.Throwable,同时它有一个兄弟Error----Error是更严重的问题,一般是系统层面的,无需程序处理----程序只需要处理Exception自定义异常(2):----自定义异常,需要继承Exception类或者其子类(1)继承自Exception,就变成Checked Exception(2)继承自RuntimeException,就变成Unchecke
2020-08-08 23:24:55
79
原创 第九章--Java异常和异常处理 第二节--Java异常处理
异常处理(1):异常处理(的目的):(1)允许用户及时保存结果(2)抓住异常,分析异常内容(3)控制程序返回到安全状态异常处理(2):---- try - catch - finally :一种保护代码正常运行的机制---- 异常结构:(1)try ... catch(可以有多个,下同)(2)try ... catch ... finally(3)try ... finally注意:try必须有,catch和finally至少要有一个异常处理(3):--.
2020-08-08 15:20:07
123
原创 第九章 Java异常和异常处理 第一节 Java异常分类
异常概述:异常:程序不正常的行为或者状态---- int a = 5 / 0 ;----数组越界访问---- 读取文件,结果该文件不存在异常处理(处理整个异常):希望可以做到----程序返回到安全状态----允许用户保存结果,并以适当方式关闭程序举个例子:早期的时候,windows98一旦出现错误,系统直接蓝屏,所有的东西如编辑的文档,编写的代码全都没有(没有来得及保存)现在的win7 / win10,如果程序出现错误,就会弹出一个错误警告,问你发送不发...
2020-08-07 23:35:33
189
原创 第八章 Java常用类 第四节 时间相关类
时间类(1):--java.util.Date(基本废弃,Deprecated)getTime(),返回自从1970.1.1以来的毫秒数--java.sql.Date(和数据库对应的时间类)--Calendar是目前程序中最常用的,但是是抽象类Calendar gc = Calendar.getInstance();Calendar gc = new GregorianCalendar();简单工厂模式时间类(2):Calendar类的相关函数--...
2020-06-23 20:27:01
131
原创 第八章 Java常用类 第三节 字符串相关类
字符串(1)String--Java中使用频率最高的类--是一个不可变对象,加减操作性能较差--以下方法需要牢记:charAt, concat, contains, endsWith, equals, equalsIgnoreCase, hashCode, indexOf, length matches, replace, replaceAll, split, startsWith, subString, trim, v...
2020-06-22 17:09:13
116
原创 第八章 Java常用类 第二节 数字相关类
--Java数字类(1)整数 Short, Int, Long(2)浮点数 Float, Double(3)大数类 BigInteger(大数类),BigDecimal(大浮点数)(4)随机数类 Random(5)工具类 Math--java.math包在Java类库中,整数类和浮点数类所表示的数字都有界限范围,如Int是-2147483648至2147483647。而大数类则没有限制,可以表示无穷大的数字。整数类型(1):整数类型(2):整数...
2020-06-21 16:51:31
127
原创 第八章 Java常用类 第一节 Java类库概述
Java类库统计:--Java8有217个包,4240个类,主要是java,javax,org三个包Java类库文档(1):--Java类库文档:https://docs.oracle.dom/javase/8/docs/api/--官方文档目前以英文为主--非官方的文档版本有中文(社区自己翻译的)--可以下载文档离线版本(chm格式)--这些文档原先是程序中的注释。利用JavaDoc技术,将这些注释抽取出来,组织形成的以HTML为表现形式的API(Application
2020-06-20 16:31:02
200
原创 第七章 package,import和classpath 第四节 Java访问权限
Java访问权限(1):--Java访问权限有四种:(1)private:私有的,只能本类访问(2)default(通常忽略不写,写了编译不通过):同一个包内访问(3)protected:同一个包,或者子类均可以访问(4)public:公开的,所有类都可以访问--使用范围:(1)四种都可以用来修饰成员变量、成员方法、构造函数(2)default和public可以修饰类Java访问权限(2):总结:...
2020-06-20 16:02:04
110
原创 第七章 package,import和classpath 第三节 package和import----命令行
package和import(1):--Java支持多个目录放置Java,并且通过package / import / classpath / jar等机制配合使用,可以支持多处地方放置和调用Java类--利用Eclipse等IDE可以快速生成包、类和jar文件,可以快捷import所需要的classpackage和import(2):--包名:和目录层次一样cn.com.test.Man.java必须放在cn \ com \ test目录下--类的完整名字:包名 + 类名c..
2020-06-17 20:18:09
167
原创 第七章 package,import和classpath 第二节 jar文件导出和导入
jar(1):-- .java文件最终会被编译成 .class文件(二进制),并被分发到其他机器上使用。--jar文件,一种扩展名为jar的文件,是Java所特有的一种文件格式,用于可执行程序文件的传播。--jar文件实际上是一组class文件的压缩包(可以用压缩软件打开)--项目引入一个jar文件,就可以使用该jar文件中的所有类(.class文件),无需类的源码文件(.java文件)--jar文件本质上和C++中的DLL文件类似jar(2):jar文件优势(1)jar文件
2020-06-17 15:58:13
185
原创 第七章 package,import和classpath 第一节 package和import
package(1):--所有的Java类都是放置在同一个目录下面的,因此类之间的相互调用无需显式声明调用。注意:(1)同一个目录下,两个类的名字不能相同 (2)文件过多,查找和修改都不易,且容易出错--Java支持多个目录放置Java文件,并且通过package / import / classpath / jar等机制配合使用,可以支持跨目录放置和调用Java类package(2):--package包,和C++中的namespace类似--在...
2020-06-14 16:55:59
260
原创 第六章 static、final和常量设计 第五节 不可变对象和字符串
常量是不会被修改的,在内存空间中,只需要保留一份、只读。Java语言设计对只读的对象进行了设计,叫做不可变对象不可变对象(1):(Immutable Object)--一旦创建之后,这个对象的值或者对象的状态就不能被更改了--其内在的成员变量的值就不能修改了--八个基本型别的包装类属于不可变对象--String、BigInteger和BigDecimal等属于不可变对象可变对象(Mutable Object):与不可变对象相对应。--普通对象(Man、Human都属于普通对象..
2020-06-13 19:18:21
126
原创 第六章 static、final和常量设计 第四节 常量设计和常量池
常量设计(1):常量:一种不会修改的变量--Java没有constant关键字--不能修改,final--不会修改 / 只读 / 只要一份,static--方便访问publicJava中的常量:--public static final--建议变量名字全部大写,以连字符相连,比如UPPER_BOUND常量设计(2):如果变量是static且final的,static保证只有一份,final保证值不会被修改,那么这个变量就是常量。常量设计(3)...
2020-06-11 20:56:59
222
原创 第六章 static、final和常量设计 第三节 final
--Java的final关键字同样可以用来修饰(1)类(2)方法(3)字段--final修饰类时:final修饰的类,不能被别的类继承,查看FinalFather.java--final修饰方法时:父类中如果有final的方法,呢么子类中不能重写此方法,查看FinalMethodSon.java--final修饰变量时:final的变量,不能再次赋值。这里分为两种情况:(1)如果是基本型别的变量,不能修改其值;查看FinalPrimitive.java(2)如果是对象实例
2020-06-10 16:00:44
91
原创 第六章 static、final和常量设计 第二节 单例模式
static关键字作用于变量时,该变量在内存中只有一个拷贝,由此特点,衍生出设计模式当中一种经典的设计模式---单例模式。单例模式(1):--单例模式,又名单态模式,Singleton。--限定某一个类在整个程序运行过程中,只能保留一个实例对象在内存空间。(对象是new出来的,那么new的话限定只能new一次不能new多次。) 内存空间中,一个类只有一个对象存在,这就是单例模式。--单例模式是GoF的23种设计模式(Design Pattern)中经典的一种,属于创建型模式类型。单例..
2020-06-09 17:28:53
122
原创 第六章 static、final和常量设计 第一节 static
static(1):--static:静态的,Java中特殊的关键字--Java中的static关键字(可以作用在):(1)变量(2)方法(3)类(4)匿名方法块static(2):--静态变量,类共有成员(1)查看例子Potato.java(2)static变量只依赖于类存在(通过类就可访问),不依赖于对象实例存在。也就是说,如果类中存在一个static变量,那么可以通过 类名.变量名 就可以访问,也可以通过 对象名.变量名 访问。(3)所有的对象实例,...
2020-06-08 16:50:13
126
原创 第五章 继承、接口和抽象类 第三节 转型、多态和契约设计
类转型(1):--变量支持互相转化,比如 int a = ( int ) 3.5 ; (转型意味着两个数据有共同点,如3和3.5的整数部分相同,才能转型)--类型可以相互转型,但是只限制于有继承关系的类。(1)子类可以转换成父类,而父类不可以转为子类。(2)子类继承父类所有的财产,子类可以变成父类(从大到小,因此子类肯定大。即向上转型);从父类直接变成子类(从小变大,即向下转型)则不允许。 从大的东西(子类)转为小的东西(父类)是可以的,因为可以把多余的东西屏蔽掉。类转型(2...
2020-06-07 19:00:17
145
原创 第五章 继承、接口和抽象类 第二节 抽象类和接口
抽象类(1):--类:属性(0个或多个)+方法(0个或多个)--一个完整(健康)的类:所有的方法都有实现(方法体)--类可以没有方法,但是有方法就肯定要有实现,这才是一个完整的类--一个完整的类才可以被实例化,被new出来--如果一个类暂时有方法未实现,需要被定义为抽象类(若方法只有方法名字,形参列表,没有方法体,那所在的类就被定义为抽象类)抽象类(2):当图形未知时(如三角形、正方形),无法给出calArea的具体实现,因此此方法被定义为abstract。--抽象类关键
2020-06-06 17:36:31
168
原创 第五章 继承、接口和抽象类 第一节 继承
继承(1):--面向对象编程语言和面向过程的编程语言最突出的特点就是变量类型的继承--继承更符合大自然规律:父亲有的,儿子就有举个例子:继承(2):继承(3):--面向过程编程语言没有继承,导致出现很多类型重复定义--物以类聚,世间万物皆对象,对象也可以分成若干类别--类别内的对象属性和方法都具有一定的共同点--将共同点提取出来,即形成了父类/基类/超类(三种定义等价的)Parent class / Base class / Super class-...
2020-06-05 17:31:25
142
原创 第四章 面向对象思想、类和对象 第四节 信息隐藏和this
信息隐藏原则(1):面向对象有一个法则: 信息隐藏--类的成员属性,是私有的private--类的方法是公有public的,通过方法修改成员属性的值打个比方:朋友在熟悉,也不会到他抽屉直接拿东西,而是通过他的公开接口(公开方法)来访问、修改东西。信息隐藏原则(2):所谓信息隐藏:通过类的方法来间接访问类的属性,而不是直接访问类的属性。信息隐藏原则(3):--类成员是私有private的--get和set方法是公有public的,统称为getter和setter--
2020-06-04 20:57:00
621
原创 第四章 面向对象思想、类和对象 第三节 构造函数
构造函数(1):构造函数(2):--Java构造函数的名称必须和类名一样,且没有返回值。但是可以用public或者private修饰。--Java有构造函数,但是没有析构函数(C++中有)。注意:构造函数是在内存中开辟一个空间存储数据;析构函数是将一个数据对象清空。--每个变量都是有生命周期的,它只能存储在离他最近的一对{}中。--当变量被创建时,变量将占据内存;当变量消亡时,系统将回收内存。构造函数(3):--Java具有内存自动回收机制的,当变量退出其生命周期后,JV
2020-06-04 17:14:44
112
原创 第四章 面向对象思想、类和对象 第二节 Java类和对象
类的对象(1):--最简单的类class A{} //没有任何属性和行为--对象 A obj = new A();--类是定义,是规范,是“死”的东西--对象是实例,是类的一个实现,是一个具体的东西--打个比方:类等价于一个土豆丝菜谱,对象是根据类制作处的对象,等价于一盘土豆丝类和对象(2):A obj1 = new A(); A obj2 = new A();以上有2个对象,它们的类型都是A,但是这是两个不同的对象,在内存中有不同的存放...
2020-06-03 21:42:28
136
原创 第四章 面向对象思想、类和对象 第一节 面向对象思想
面向对象(1):--现实世界是由对象和对象之间相互作用共同组成的。--每个对象有自己的特有特性,也有自己专有的方法。外部对象想要调用这些方法,可以向它请求并传入参数,等方法执行结束后,返回结果。--对象 = 属性 + 方法--对象的规范 = 属性定义 + 方法定义面向对象(2):Java中,引入对象和类的概念--对象是一个变量(具体的东西)--类就是类型(是规范,是定义),从万千对象中抽取共性--类规定了对象应该有的属性内容和方法--对象是类的具体实现,是活生生的
2020-06-02 21:25:29
107
原创 第三章 类基础知识 第四节 自定义函数
自定义函数--函数必须放在类的范围内--修饰词(public或者static),返回值(int或者void),函数名(形参列表){函数体}--通常情况下,我们都建议方法是public--函数可以调用其他的函数,例如上例中,main函数调用了add函数--递归函数调用,需要注意终止性函数的重载:--同一个类中,函数名称可以相同,即重载函数(overload),但是函数参数的个数或者类型必须有所不同--不能以返回值来区分同名的函数...
2020-05-31 22:17:23
136
原创 第三章 类基础知识 第三节 选择和循环结构
选择结构:if(布尔表达式) 单种caseif(布尔表达式) ... else 两种caseif(布尔) ... else if (布尔) ...else 可以多种case多重选择结构:switch(表达式)--多个case分支--满足一个分支后,需要break--最后一个分支为default循环结构:whiledo...whileforbreak // 中断循环并退出continue // 跳出本次循环,继续下次循环...
2020-05-31 21:05:25
102
原创 第三章 类基础知识 第二节 Java基本类型和运算符
基本类型/基本型别:--boolean 布尔--byte 字节--short/int/long 短整数/ 整数/ 长整数--float/double 浮点数--char 字符布尔类型:boolean:只有true,或者false两种值,默认是false。字节类型:byte:--byte字节, 1 byte = 8 bits (8位)--存储有符号的,以二进制补码表示的整数--最小值-128,最大值127, 默认值为0--byte类型用在大型数组中可以显著节
2020-05-31 20:12:15
183
opengl包.rar
2020-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人