
2.Java
文章平均质量分 65
Whale-Song
今天 你努力了不管是否有收获 至少你赢了坐享其成的你。
展开
-
Java---设计模式---基本原则
1.面向接口编程 1) 这是Java编程里面大家公认的第一原则。 2)接口很重要的一个功能:封装隔离。 3)接口是功能块或封装块的外观2.优先使用对象组合而非类继承3.分层(最典型的三层结构: 表现层 --> 逻辑层 --> 数据层)4.层间交互的基本原则 1) 表现层调用逻辑层,逻辑层调用数据层,不可以反过来。 2) 层间交互也应该通过接口进行调用,以确保各...原创 2018-04-14 11:17:55 · 189 阅读 · 0 评论 -
Java---设计模式---基本经验
1.类要单一 所设计的类功能要单一 ,一个类应该是描述一类极其相关的属性和方法。2.加强内聚,松散耦合 指一个类,能够在自己内部实现的功能就自己内部实现,不要去调其它类,尽量减少与其它类的依赖关系。3.好的封装性 不必对外开放的部分,一律不对外开放。如果在不确定属性权限的情况下,先把类的属性设成private,用的时候再开。4.类的粒度要合理 Java规范中建议,一个类的大...原创 2018-04-14 11:22:20 · 184 阅读 · 0 评论 -
Java---设计模式---单例
解决:保证了一个类在内存中只能有一个对象。思路: 1、如果其他程序能够随意用new创建该类对象,那么就无法控制个数。因此,不让其他程序用new创建该类的对象。 2、既然不让其他程序new该类对象,那么该类在自己内部就要创建一个对象,否则该类就永远无法创建对象了。 3、该类将创建的对象对外(整个系统)提供,让其他程序获取并使用。步骤: 1、将该类中的构造函数私有化。 2...原创 2018-04-14 11:39:04 · 179 阅读 · 0 评论 -
Java---设计模式---工厂
场景和问题 Java程序开发讲究面向接口编程,隐藏具体的实现类,可是如何得到接口呢? 工厂类的命名规范:***Factory 单例工厂方法的命名规范:getInstance()工厂的本质是“选择实现” 工厂、接口和实现类之间的技术边界:工厂只负责选择实现,实现类才做真正的实现,而接口是限定到底实现什么东西和返回什么东西,三者之间分工明确、各负其责。代码:这是两个模块之间的调...原创 2018-04-14 12:35:01 · 250 阅读 · 0 评论 -
Java---设计模式---值对象
场景和问题 在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?基本的编写步骤 ◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源) ◎第2步:私有化所有属性,保持一个默认构造方法(public无参) ◎第3步:为每个属性提供get()、set()方法(如果是boolea...原创 2018-04-15 11:10:54 · 270 阅读 · 0 评论 -
Java---设计模式---装饰
场景和问题 在不对原有对象类进行修改的基础上,如何给一个或多个已有的类对象提供增强额外的功能?MyBufferedReader:import java.io.FileReader;import java.io.IOException;import java.io.Reader;/** * Time:2018/4/15 * Description: * 装饰: * 在不...原创 2018-04-15 11:16:33 · 179 阅读 · 0 评论 -
Java---设计模式---DAO
场景和问题 在Java程序中,经常需要把数据持久化,也需要获取持久化的数据,但是在进行数据持久化的过程中面临诸多问题(如:数据源不同、存储类型不同、供应商不同、访问方式不同等等),请问如何能以统一的接口进行数据持久化的操作?解决方案:DAO的理解 1、DAO其实是利用组合工厂模式来解决问题的,并没有带来新的功能,所以学的其实就是个思路。 2、DAO理论上是没有层数...原创 2018-04-15 11:38:57 · 227 阅读 · 0 评论 -
Java---泛型---高级应用
泛型的通配符:? 当操作的不同容器中的类型都不确定的时候,而且使用的都是元素从Object类中继承的方法, 这时泛型就用通配符?来表示即可。(助理解的比方: 泛型中的多态应用) import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.junit.T...原创 2018-04-07 10:42:46 · 417 阅读 · 0 评论 -
Java---泛型
泛型技术的由来: 集合中可以存储任意类型对象,但是在取出时,如果要使用具体对象的特有方法时,需要进行向下转型,如果存储的对象类型不一致,在转型过程中就会出现ClassCastException异常。这样就给程序带来了不安全性。 在jdk1.5以后就有了解决方案——泛型技术:在存储元素时,就不允许存储不同类型的元素。存储了就编译失败。 所以就需要在存储元素时,在容器上明确具体的元素类型...原创 2018-04-05 20:47:53 · 166 阅读 · 0 评论 -
Java---java.math包中Big系列
玩转大数(BigInteger): 1.基本数据类型的值要转换成大数(经常会用到),用下面两种方法 1)构造方法 2)valueOf()方法 2.加、减、乘、除、取模等常用数学运算全部用函数来实现,不能数学用运算符。 并且一般的函数参数都是大数对象,不能用数值,也不能用整数及包装类变量。 还要注意,一般的函数在进行大数运算时,不是原地修改,而是返回...原创 2018-04-05 10:43:31 · 403 阅读 · 0 评论 -
Java---根据汉字拼音排序(Tree系列)
在做项目的时候,一般项目都会有查询功能,这时有个需求,就是根据汉字拼音排序。话不多少,直接上代码:import java.text.Collator;import java.util.Comparator;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.Map.Entr...原创 2018-04-05 10:14:16 · 509 阅读 · 0 评论 -
Java---Set/Map排序
为什么要排序?因为Set/Map是按散列表的方式存储,而通常工程需求是按某种顺序显示出来,所以要排序。排序很简单,采用Tree系列来存储Set/Map,即其子类TreeSet/TreeMap;排序方法以TreeSet为例,TreeMap类似。法1:用TreeSet或Treemap的"空参构造方法"来实现,该版本特点: ---称为按元素的自然顺序排序 1)被添加的元素必须要实现java.lang....原创 2018-04-05 10:08:29 · 419 阅读 · 0 评论 -
Java---断言
public class AssertionDemo { public static void main(String[] args) { int x=10; //程序正常执行时,下面的断言语句是无视的,因此不会影响程序执行效率。但若采用断言调试方执行,则下面语句有效 //assert x==9; //断言x的值为10,若断言错误则系统会抛出AssertionErro(异常的兄...原创 2018-03-31 19:51:43 · 192 阅读 · 0 评论 -
Java---Map
Map接口不是Collection接口的继承。而是从自己的用于维护键-值关联的接口层次结构入手。按定义,该接口描述了从不重复的键到值的映射。 可以把这个接口方法分成三组操作:改变、查询和提供可选视图。 改变操作允许从映射中添加和除去键-值对。键和值都可以为null。但是,不能把Map作为一个键或值添加给自身。 “集合框架”提供两种常规的Map实现:HashMap和...原创 2018-03-31 19:47:01 · 147 阅读 · 0 评论 -
Java---Set
按照定义,Set接口继承Collection接口,而且它不允许集合中存在重复项。所有原始方法都是Collection中现成的,没有引入新方法。 具体的Set实现类依赖添加的对象的equals()方法来检查等同性。HashSet类和TreeSet类: “集合框架”支持Set接口两种普通的实现:HashSet和TreeSet。在更多情况下,会使用HashSet存储重复自由的...原创 2018-03-31 19:39:18 · 149 阅读 · 0 评论 -
Java---List
List接口继承了Collection接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。 面向位置的操作包括插入某个元素或Collection的功能,还包括获取、除去或更改元素的功能。在List中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。 void add(int index, Object ele...原创 2018-03-31 19:36:02 · 158 阅读 · 0 评论 -
Java---Collection
Collection接口用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。Iterator接口主要用来枚举集合中的元素。 可理解成集合的查寻组件组操作:Collection接口支持的其它操作,要么是作用于元素组的任务,要么是同时作用于整个集合的任务。 boolean contains( Object obj ) boolean addAll( Collect...原创 2018-03-31 19:31:27 · 158 阅读 · 0 评论 -
搜索---DFS---倒油
题目 相对于广搜,深搜采用的过程偏向面向过程,用“特征串”去区别两种情况是否相同,(同一种搜索)在效率比面向对象要快点。 话不多说直接上代码(3个类):/** * 倒油---倒油问题解决的过程 * @author 宋进宇 */import java.util.ArrayList;public class PourOil { public static void main(...原创 2018-03-29 18:33:39 · 468 阅读 · 0 评论 -
搜索---BFS---倒油
BFS是什么就不多少了直接来个题目---倒油: 有一位厨师要从盛12斤油(a桶)的桶中倒出6斤油来,可是手边只有盛8斤油(b桶)和盛5斤油(c桶)的两个桶,问如何操作才能将6斤取出来呢?题解: 采用面向对象去做,面向对象最主要的是要注意引用直接的捆绑,这个是采用面向对象解题的一大坑,很练手,可以加大对引用和基本数据类型的认识。具体过程如下(有3个类):主类:import...原创 2018-03-29 16:36:21 · 499 阅读 · 0 评论 -
Java---日期处理(Date、Calendar、DateFormat)
Java中玩转日期总共就用到3个类: java.util.Date日期类: 用于表示或存储精确值(long型值),通常用于进行精确值的获取或计算,用计算后的精确值创建一个新的日期对象,精确值=当前日期时间距离“1970年1月1日0时0分0秒0毫秒”所经过的毫秒值 java.util.Calendar日历类: 提供了很多日期时间方面的操作运算功...原创 2018-03-26 15:11:33 · 263 阅读 · 0 评论 -
Java---面向对象---多态
什么是多态?同一行为的多种不同表达,或者同一行为的多种不同实现就叫做多态。例如:1)Person,Student,Teacher之间的关系2)有一个“车”的父类,宝马继承自车,奔驰继承自车。那么,车可以是宝马,也可以是奔驰,具有不同的形态,这种现象就叫多态。 3) “笔”是父类,钢笔、铅笔、圆珠笔是子类。这时如果请你给我一支笔写字,你可以给任意一支笔。运行规则:原创 2017-12-27 16:57:17 · 281 阅读 · 0 评论 -
Java---面向对象---自动装箱和拆箱
自动装箱:就是把基础数据类型自动封装并转换成对应的包装类的对象。拆 箱 :就是把包装类的对象自动解包并转换成对应的基础数据类型。话不多少,直接来代码:import org.junit.Test;public class Demo { @Test public void demo1(){ Integer a = 5; //装箱 Java自动帮我们把5封装成一个Integ原创 2017-12-27 16:42:16 · 408 阅读 · 0 评论 -
Java---面向对象---精确掌握程序执行顺序
public class Person { private String name="Jack";//4 private int age=2;//5 public Person() {//3 此处先执行super(...),再返回到当前类往下执行 age=1000;//6 } public static void main(String[] args) {//1 Person p原创 2017-12-23 20:10:59 · 472 阅读 · 0 评论 -
Java知识---关于如何跳出多重嵌套循环
1.Java可以在外面的for循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。int n = 100;ok:for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { if (k==原创 2017-11-08 18:54:17 · 292 阅读 · 0 评论 -
Java知识--基本数据类型
1.高精度的值是不能赋给低精度变量的,若要强行赋值则必须强转2.布尔类型只有:true和false,且都是小写。没有0和非0的概念3.凡是带小数点的数,都是double型4.boolean-1位 byte-1个字节 char-2个字节 short-2个字节 int-4个字节 long-8个字节 float-4个字节 double-8个字节 八种基本数据类型 需注意 long型值原创 2017-10-06 18:06:40 · 183 阅读 · 0 评论 -
Java练习
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同import java.util.Scanner;public class exercise{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.原创 2017-09-23 22:40:59 · 165 阅读 · 0 评论 -
Java---设计模式---遇见MVC-①
三层结构设计模式 ① 表现层功能:展示数据、人机交互、收集参数调用逻辑层。 ② 逻辑层功能:进行数据的逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处理后续流程、组织数据返回给表现层。 ③ 数据层功能:实现数据持久化、实现对象和持久化数据的双向映射。认识MVC设计模式: 通过设计一个地址管理app来认识MVC模式,如有BUG,请多多包涵。这是项目的结构:软件入口:Ad...原创 2018-04-12 17:04:01 · 207 阅读 · 0 评论 -
Java---设计模式---遇见MVC-②
表现层:展示数据、人机交互、收集参数调用逻辑层。主界面:ListPanlpackage cn.hncu.addr.ui;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionLis...原创 2018-04-12 17:34:36 · 163 阅读 · 0 评论 -
Java---设计模式---遇见MVC-③
逻辑层:进行数据的逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处理后续流程、组织数据返回给表现层。package cn.hncu.addr.business;import java.util.ArrayList;import java.util.List;import cn.hncu.addr.dao.AddressDAO;import cn.hncu.addr.vo.Addr...原创 2018-04-12 17:40:19 · 155 阅读 · 0 评论 -
Java---Properties---软件试用次数
Properties小运用,实现一个软件试用次数的小功能。 当使用次数到达一定次数时,会出现弹窗提醒,试用次数已到,请注册。当然,这仅限于对于小白的限制,稍微懂点编程的人随便都可以破解。import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io...原创 2018-04-01 16:01:06 · 294 阅读 · 0 评论 -
小游戏---贪吃蛇
这几天一直在写贪吃蛇小游戏,ACM都没时间去做,但是收获还是很大的。程序中包函了线程、监听、界面的应用,最大的困难的如何实现动画,经过反复修改,感觉采用线程的方法是最好控制的。动画是通过JPanel.updateUI()函数来重画,每各一定时间重画一下,就形成了动画效果。很假O(∩_∩)O哈哈~….//package 课后练习.d1104;import java.awt.Color;import原创 2017-11-05 18:02:14 · 231 阅读 · 0 评论 -
小程序---信息添加
//package 课后练习.GUI.Swing;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;impo原创 2017-10-29 12:10:18 · 343 阅读 · 0 评论 -
小程序---金额转换
这是课本里面的一个例题,我进行了优化写出了这个较为满意的程序, 有不好的地方希望多多指教。import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.原创 2017-10-29 10:35:30 · 3747 阅读 · 0 评论 -
小程序---计算器
最近各大OJ都进不去,感觉没事情做 于是花了2天的时间写了一个简易计算器小程序 该计算器实现了简单的+-*/运算,而且添加了鼠标监听和键盘监听,练一练布局管理和监听,感觉挺不错的。import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import原创 2017-10-23 19:59:09 · 951 阅读 · 0 评论 -
进程与线程
1.进程进程(process)是一个可并发执行的具有独立功能的程序(program)关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。有六个性质:(1)结构性 (2)共享性 (3)动态性 (4)独立性 (5)并发性 (6)制约性 三种状态:(1)就绪(ready)态(2)运行(running)态(3)阻塞(blocked)态 2.线程原创 2017-12-12 17:35:15 · 228 阅读 · 0 评论 -
Java知识--接口
1.接口本质上是一种完全的抽象类2.接口中方法全都是抽象方法: public abstract(这两个关键字我们即使不写,Java也会帮我们加上)。public abstract double area(); //可以省略:public abstractdouble perimeter();//Java会自动帮我们加:public abstract3.接口中的变量全是常量(声明时必须给初值): p原创 2017-10-18 21:49:46 · 359 阅读 · 0 评论 -
Java知识---awt--布局
常用布局: 1.边局管理: Frame的默认布局,内部组件摆放: 东、西、南、北、中setLayout( new BorderLayout() ); Button btn1 = new Button("OKOK");Button btn2 = new Button("NONO");Button btn3 = new Button("111111");Button btn4 = new But原创 2017-10-27 18:31:11 · 318 阅读 · 0 评论 -
Java知识---类的多态
1.多态包含两层: 第一层(先进行)是编译时多态: 看类型(等号左边)—该引用的类型中有没有被访问的成员 第二层(再进行)是运行时多态: 看内存(等号右边)—new谁调谁(先看所new的类中有没有,若有则调用,否则看它的父类,依此类推)@Test //运行时多态 public void demo2(){ Person p = new Student("Rose", 22,原创 2017-10-14 15:46:37 · 240 阅读 · 0 评论 -
Java知识---类的继承
1.子类对象访问成员的顺序:先子类,再父类。 —-如果子类存在就是使用子类的,不会访问父类。2.子类对象的构造顺序: 先父类,再子类。 3.如果一个类显式声明从哪个类继承,则父类就是哪个类; 如果没有显式声明,那么Java会帮自动让该类继承Object,因此Object是Java中所有类的根。4.super(…), this(…) 这两种方法只能在构造方法中调用,且必须是在第一句,还有这两种方法是原创 2017-10-14 15:41:07 · 237 阅读 · 0 评论 -
Java知识--类的封装
1.类的定义: 类{ 若干个变量(属性); //成员变量 若干个函数(方法); //成员方法 } 2.类名(完整名称): 包名+类名 3.对象的实例:类 对象 = new 构造函数(); 4类的封装性: (1)所有的变量私有化,写一些setter-getter方法供外面操作这些属性, 在这些方法中可以进行业务控制。 (2)写一些构造方法,供外面在创建对象原创 2017-10-11 19:49:01 · 524 阅读 · 0 评论