Java
Is-Me-HL
磨剪子嘞戗菜刀
展开
-
Java基础总结五之集合
在总结集合前,先对比一下数组和集合这两个概念:A:长度区别:数组的长度是固定的,集合的长度是可变的。B:内容区别:数组存储的是同一个数据类型的元素,而集合可以存储不同类型的元素。C:元素的数据类型不同:数组可以存储基本数据类型,也可以存储引用数据类型。集合只能存储引用数据类型。由上可知:就大概明白了集合的出现是有一定原因的:,其长度可变,可存储不同类型的元素。举例:Array...原创 2018-08-09 17:03:28 · 350 阅读 · 0 评论 -
Java基础总结之设计模式(七)
装饰者模式:使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类,是继承的替代方案。优点:使用装饰者模式,可以提供比继承更灵活的扩展对象的功能,可以动态的添加对象的功能,并且可以随意的组合这些功能缺点:正因为可以随意的组合,所以就可能出现一些不合理的逻辑。下面是一个简单的装饰者设计模式(供参考):public interface Phone { public abs...原创 2018-08-22 23:29:59 · 465 阅读 · 0 评论 -
Java基础总结之GUI图形界面编程
GUI和CLI:GUI:(Graphical User Interface)图形用户接口:用图形的方式显示计算机的操作界面。CLI:(Command Line User Interface)命令行用户接口:常见的Dos命令行操作。awt和swing:awt:(Abstract Windows ToolKit)抽象窗口工具包,需要调用本地系统方法实现功能,属重量级控件。swing...原创 2018-08-20 14:56:49 · 2259 阅读 · 0 评论 -
Java基础总结之设计模式(四)
适配器模式:我们在开发程序的是时候,我们会写接口,会写接口的实现类,但是当接口中的方法很多时,我们则会因为为了使用里面的一个功能而"被迫"实现接口中的所有方法。这样的效率是很低的。就算是接口中其他的方法全部空实现,那对于代码的冗余等爷都是很大的。所以适配器模式是思想是将一个接口转换成客户希望的另外一个接口。就上诉的例子来讲,我就是不想实现那么多方法,我作为客户,我的需求就是,你给我一个适配器类...原创 2018-08-20 20:49:32 · 543 阅读 · 0 评论 -
Java基础总结之各版本JDK新特性
JDK5新特性:(1)自动装箱和拆箱:public class JDK5TNewFeatures { public static void main(String[] args) { Integer num = 10; int num2 = num; System.out.println(num2); }}如下是反编译class文件获得的源码:实际上编译器自动完...原创 2018-08-23 22:07:12 · 1018 阅读 · 1 评论 -
Is-a、has-a、Like-a区别
Is-a:是a:A Is B:A是B(继承关系,继承)。has-a:有a:A has B:A有B(从属关系,聚合)。like-a:像a:A like B:A像B(组合关系,接口)。关于Is-a、has-a、like-a的使用场景:如果A,B是Is-a关系,那么应该使用继承,例:玻璃杯、塑料杯都是杯子。如果A,B是has-a关系,那么应该是用聚合,例:汽车由发动机,底...原创 2018-08-28 09:41:23 · 5810 阅读 · 0 评论 -
null与""的区别
总结null与"":null指的是空对象,""指的是字符串空。String s = "";s.substring(0);上述对于字符串操作是没有问题的。但是如下代码:String s2 = null;s2.substring(0);是会出现问题的,报错如下:Exception in thread "main" java.lang.NullPointerExcept...原创 2018-08-28 11:16:06 · 1703 阅读 · 0 评论 -
方法重载和方法重写
方法重载:(Overload)方法重载发生在类中的几个方法上,每个重载方法的参数类型或参数的数量必须是不同的。虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分使用的是哪个方法。demo:public void show(int i){...}public int show(int i,String s){return...}方法重写:(Override)方法重写...原创 2018-08-28 14:12:53 · 510 阅读 · 0 评论 -
Java基础总结之网络编程
网络编程:用Java语言实现计算机间数据的信息传递和资源共享。网络模型:七层:(从上至下)分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。网络编程的三要素:ip、端口、协议ip:网络中计算机的唯一标识。Ip在计算机底层是由二进制所表示的,但是为了方便,人们用“点分十进制”(将二进制文件做换为十进制,再用.分开)表示IP。Ip地址的组成:网络号+主机号。如何查看自己的...原创 2018-08-21 11:02:38 · 675 阅读 · 0 评论 -
Java基础总结之反射
Java反射机制:是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任何一个对象都能够调用它的任何一个方法说着属性;这种动态获取的信息以及动态调用的对象的方法的功能成为Java语言的反射机制。那么,如果想解刨一个类的话,首先就要获取到该类的字节码文件对象:获取方法有如下三种:package h.l.reflect;public class ReflectDemo1 ...原创 2018-08-21 22:32:56 · 610 阅读 · 0 评论 -
break、continue的另一种美
public class Test { public static void main(String[] args) { first : for (int i = 0; i < 10; i++) { for (int j = 0; j < i; j++) { System.out.print(j + " "); if (j == 5) break...原创 2018-10-21 23:00:44 · 88 阅读 · 0 评论 -
Java基础之多线程及并发库
实际上关于多线程的基础知识,前面自己已经总结过一部分,但是每一个阶段对于同样知识点的学习侧重点是不一样的,前面的Java基础总结八之多线程(一)和 Java基础总结九之多线程(二)是对JDK5以前多线程相关基础知识的一个简单总结,今天本文将偏重于JDK5提供的并发库进行学习总结。首先,从一个简单的多线程demo引入(包括内容为JDK5之前的synchronized关键字及通过wait方法和no...原创 2018-11-09 11:50:13 · 946 阅读 · 0 评论 -
Java基础总结之设计模式(六)
模板设计模式:定义一个算法的骨架,而将具体的算法延迟到子类中实现。优点:使用模板方法模式,在定义算法骨架的同时可以很灵活的实现具体的算法,满足用户灵活多变的需求。缺点:如果算法骨架有修改的话,则需要修改抽象类。下面是一个简单的模板设计模式(供参考):public class GetTime { public long getTime() { long start = Sy...原创 2018-08-22 20:50:35 · 336 阅读 · 0 评论 -
Java基础总结之设计模式(五)
动态代理:本来应该自己做的事情却请了别人来做,被请的人就是代理对象。所谓动态代理就是在程序运行过程中产生的这个对象。动态代理通过反射实现。在Java中的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口就可以生成动态代理对象。注意JDK提供的代理只能针对接口做代理。public interface StudentDa...原创 2018-08-22 20:19:39 · 574 阅读 · 0 评论 -
Java基础总结六之IO流(一)
IO流总结前,有必要总结一下File类的的功能特性: File:文件和目录(文件夹)路径名的抽象表示形式。(1)得到File对象三种方式: //File(String pathname):根据一个路径得到File对象 //把e:\\test\\test.txt下的test.txt封装成File对象 File file=new File("e:\\test\\te...原创 2018-08-10 10:47:35 · 478 阅读 · 0 评论 -
Java基础总结一
JVM、JRE、JDKJVM:Java Virtual Mechine(Java虚拟机)JVM是Java实现跨平台的最核心部分。 JVM是一个标准,一套规范,规定了.class文件在其内部运行的相关标准和规范。 及其相关的内部构成。所有的java程序首先会被编译成.class的类文件,这种类文件可以在虚拟机上运行。即.class文件不直接与机器的操作系统相互关联,而是经过虚拟机间接与操作...原创 2018-08-01 17:50:56 · 215 阅读 · 0 评论 -
Java基础总结七之IO流(二)
关于IO流的一些“远亲近邻”知识:(1)打印流:字节打印流:PrintStream 字符打印流:PrintWriter打印流的特点:A:只有写数据的,不能读数据,可以操作目的地,不能操作数据源;B:可以操作任意类型的数据;C:如果启动了自动刷新,就可以自动刷新;D:该流是直接可以操作文本文件的。(2)随机访问流:RandomAccessFile实际上...原创 2018-08-10 16:18:01 · 417 阅读 · 0 评论 -
Java基础总结三
标识符:(1)类、接口、方法、变量等起名字时的字符序列。(2)组成规则:大小写字符、数字字符、$和_(3)不能以数字开头:int 1y=100;是不可行的。(4)不可以的是Java关键字:int public=100;是不行的Java严格区分大小写。 常见的命名规则:驼峰法则:将所有字母都小写(包括缩写),然后将单词的第一个字母大写。每个单词的第一个字母都大写,来得到大...原创 2018-08-06 21:26:34 · 576 阅读 · 0 评论 -
Java基础总结二
Java关键字(特点及关键字作用):(1)被Java语言赋予特殊含义的单词(53个含两个保留字)(2)关键字都是小写(3)goto和const作为保留字存在,目前并不使用(4)关键字在高级的程序开发软件中会识别关键字和 非关键字,关键字会出现特定的颜色,那么在这里需要注意的是:下图中的main不是关键字!public static void main(String [] ar...原创 2018-08-02 17:31:54 · 277 阅读 · 1 评论 -
Java基础总结四
==和equals:==作比较:基本类型比的就是值是否相同,引用类型比的就是地址值是否相同。equals比较:JDK中equals的源码如下:public boolean equals(Object obj){ return (this==obj);}从源码中可以看出equals底层也使用过==进行比较的,那么等号比较引用,比的则是对象。因此默认情况下equals比较的...原创 2018-08-07 19:10:47 · 285 阅读 · 0 评论 -
Java基础总结八之多线程(一)
1:多线程(1)多线程:一个应用程序有多条执行路径;进程:正在执行的应用程序;线程:进程的执行单元,执行路径;单线程:一个应用程序只有一条执行路径;多线程:一个应用程序有多条执行路径;多进程的意义:提高CPU的使用率;多线程的意义:提高应用程序的使用率。(2)Java程序的运行原理及JVM的启动时多线程的吗?A:Java命令去启动JVM,JVM会启动一个进程,该...原创 2018-08-17 22:18:23 · 637 阅读 · 0 评论 -
Java基础总结九之多线程(二)
虽然我们可以在多线程总结一中理解同步代码块和同步方法中的锁对象问题,但是我们并没有看到他在哪里上了锁,哪里释放了锁,为了更清晰的表达如何加锁是释放锁,JDK5以后提供了一个新的锁对象Lock,下面是Lock锁对象一个简单使用实例:import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentran...原创 2018-08-18 21:03:46 · 257 阅读 · 0 评论 -
Java基础总结之设计模式(一)
面向对象设计原则:A:单一职责原则:高内聚、低耦合。每一个类应该只有一个职责,对外只能提供一种功能。B:开闭原则:一个对象对扩展开放,对修改关闭。即说的是对类的改动是通过增加代码(扩展)实现的,而不是修改现有代码。C:里式替换原则:在任何父类出现的地方都可以用他的子类来替换。D:依赖注入原则:要依赖于抽象,不要依赖于具体实现。(ps:要针对抽象类或接口编程,而不是具体实现类)E...原创 2018-08-18 22:29:36 · 205 阅读 · 0 评论 -
Java基础总结之设计模式(二)
简单工厂模式:(下面是一个简单的实例:通过实例能更好的体会设计模式的优缺点)public abstract class Animal { // 创建抽象类Animal public abstract void eat();}public class Dog extends Animal { @Override public void eat() { System.out...原创 2018-08-19 11:08:04 · 443 阅读 · 0 评论 -
Java基础总结之设计模式(三)
单例模式:(饿汉式):package h.l.pattern3;public class Student { private Student() { } private static Student s = new Student(); public static Student getStudent() { return s; }}package h.l...原创 2018-08-19 19:21:56 · 475 阅读 · 0 评论 -
?extends T、?super T区别
// ?extends T 该中的T表示上界 参数化类型必须比T更形象化 只能往外取,不能往里面存// 错误写法 List<? extends Number> list =new ArrayList<Object>();List<? extends Number> list =new ArrayList<Integer>();Number ...原创 2019-09-27 14:44:25 · 206 阅读 · 0 评论