Java 基础
文章平均质量分 57
哈哈,柳暗花明
资深Android开发工程师。
个人网站:https://zhangjun666.fun
github: https://github.com/coderJohnZhang
展开
-
便利店选址问题
【问题描述】某小区决定在小区内部建一家便利店,现小区内部共有八栋楼,它们的地理坐标分别为:(10,20)、(30,34)、(19,25)、(38,49.1)、(9,38.1)、(2,34)、(5,8)、(29,48)。同时,其中的住户人数分别为:30, 45, 28, 8, 36, 16, 78, 56。为了方便更多的住户购物,要求实现总体最优,请问便利店应该建立在哪里?【提示】1)便......原创 2016-01-27 20:48:12 · 5072 阅读 · 1 评论 -
Java模拟顶级静态类
Java模拟顶级静态类原创 2022-07-07 19:56:38 · 307 阅读 · 0 评论 -
面向对象语言知识盘点
面向对象知识概要原创 2019-02-23 15:12:06 · 235 阅读 · 1 评论 -
Java 异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error。如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据...原创 2019-10-28 21:20:13 · 229 阅读 · 0 评论 -
Java 抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含......原创 2019-10-28 20:47:16 · 239 阅读 · 1 评论 -
Java 重写(Override)与重载(Overload)
重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能...原创 2019-10-28 20:27:20 · 160 阅读 · 0 评论 -
Java 多态
Java 多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:多态性是对象多种表现形式的体现。现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持...原创 2019-10-28 20:17:19 · 222 阅读 · 0 评论 -
Java 继承
继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中的继承:兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。所以继承需要符合的关系是:is-a,父类更通用,子类更具体。虽然食草动物和食肉...原创 2019-10-28 10:43:36 · 188 阅读 · 0 评论 -
Java 封装
Java 封装在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,...原创 2019-10-28 09:05:57 · 192 阅读 · 0 评论 -
Java 变量类型
Java 变量类型在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:type identifier [ = value][, identifier [= value] ...] ;格式说明:type为Java数据类型;identifier是变量名;可以使用逗号隔开来声明多个同类型变量。Java语言支持的变量类型有:类变量:独立于方法之外的变量,用 static 修...原创 2019-10-26 11:47:23 · 192 阅读 · 0 评论 -
为什么java构造函数的构造器只能在第一行写this() 或者super()
super()在第一行的原因就是:子类有可能访问了父类对象, 比如在构造函数中使用父类对象的成员函数和变量, 在成员初始化使用了父类, 在代码块中使用了父类等, 所以为保证在子类可以访问父类对象之前要完成对父类对象的初始化this()在第一行的原因就是:为保证父类对象初始化的唯一性. 我们假设一种情况, 类B是类A的子类, 如果this()可以在构造函数的任意行使用, 那么会出现什么情况呢? 首...原创 2019-02-23 14:18:14 · 1029 阅读 · 0 评论 -
Java集合List、Set与Map区别及适用场景总结
List和Set都是继承自Collection接口,Map则不是List元素有放入顺序,元素可重复,和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。Set元素无放入顺序,元素不可重复,重复元素会覆盖掉,Set检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。 Map是一个接口,适合储存键值对的数据线程安全集合类与非线程安全......原创 2018-04-10 23:35:38 · 3792 阅读 · 0 评论 -
Comparable & Comparator用法
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。原创 2017-03-16 13:41:52 · 545 阅读 · 0 评论 -
Java格式化数字
DecimalFormat df = new DecimalFormat ("000");String string = "1";try { int number = Integer.parseInt(string); DecimalFormat df = new DecimalFormat ("000"); string = df.format(number); /原创 2017-02-25 21:04:20 · 6349 阅读 · 0 评论 -
Java 泛型
Java 泛型原创 2017-02-25 20:54:44 · 395 阅读 · 1 评论 -
" "和null的区别
String str1 = null; // str引用为空String str2 = “”; // str引用一个空串也就是null没有分配空间,”“分配了空间,因此str1还不是一个实例化的对象,而str2已经实例化。注意因为null不是对象,”“是对象。所以比较的时候必须是 if(str1==null){…}和if(str2.equals(“”)){…}。对象用equals比较,null用原创 2017-02-25 20:44:12 · 717 阅读 · 0 评论 -
java中的==、equals和hashCode区别
前言 java中==、equals()、hashCode()都和对象的比较有关,在java中这三者各有什么用处呢,即java中为什么需要设计这三种对象的比较方法呢?关于== ==是容易理解的,java设计java就是要比较两个对象是不是同一个对象。 对于引用变量而言,比较的时候两个引用变量引用的是不是同一个对象,即比较的是两个引用中存储的对象地址是不是一样的。 对于基本数据类型原创 2017-02-25 20:39:23 · 560 阅读 · 0 评论 -
Java字符串比较
1、比较两个字符串内容的话,用a.equals(b)比较,其中a,b是两个字符串,用a==b的话比较的是a和b的内存地址;2、如果一个字符串是变量,另一个字符串是常量的话,一定要把常量写在前面,变量写在后面(即括号内),这样写的原因只有一个,避免报空指针异常。如:a是常量字符串,b是变量字符串,则一定要写成a.equals(b),不能写成b.equals(a),否则如果b为null的话,绝对报...原创 2016-10-19 21:33:46 · 545 阅读 · 0 评论 -
Java单例模式
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、枚举单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对原创 2016-08-30 18:19:08 · 474 阅读 · 0 评论 -
关于Java抽象类使用总结
抽象类要用abstract修饰,可以没有抽象方法; 一个类只要存在一个抽象方法则必须声明为抽象类;子类继承抽象类,可以重写父类的非抽象方法,如果子类不是抽象类,必须要实现父类的抽象方法,如果是抽象类,可以继续声明为抽象方法;抽象类可以应用多态; 抽象类不能直接实例化,如果要实例化,抽象类变量必须指向非抽象子类的对象;抽象方法只能申明,不能实现–abstract void func();原创 2017-08-05 14:28:40 · 447 阅读 · 0 评论 -
关于Java接口使用总结
定义抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的”抽象类“——接口(interface)。接口里不能有普通方法,接口里的所有方法都是抽象方法。Java 8对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现。原创 2017-08-05 14:35:16 · 826 阅读 · 0 评论 -
抽象类和接口差异性对比
相同点1、接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承;2、接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通类都必须实现这些抽象方法;不同点1、设计目的上1)接口作为系统与外界交互的窗口,接口体现的是一种规范。对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式来提供);对于接口的调用者而言,接口规定了调用者可以调用哪些服务,以及如何调用这原创 2017-08-05 14:39:00 · 468 阅读 · 0 评论 -
Java中的mixin说明
Mixin即mix in,混入的意思。mixin类型:不严格的讲,mixin是指这样的类型,类除了实现它的“基本类型”之外,还可以实现这个mixin类型,以表明它提供了些可供选择的行为。例如,comparable是一个mixin接口,它允许类表明它的实例可以与其他的可相互比较的对象进行排序。和多重继承类似,但通常混入Mixin的类和Mixin类本身不是is-a的关系,混入Mixin类是为了......原创 2018-04-07 17:10:05 · 3694 阅读 · 0 评论 -
关于Java的clone方法和Cloneable接口
Effective Java第11条:谨慎地覆盖clone,仔细阅读后,我们可以更进一步得出结论:其他接口不要继承(extends扩展)Cloneable接口,其他类不要实现(implements)该接口。如果真的需要对象深度(内存)拷贝,可以考虑使用序列化和反序列化代替实现。对于clone方法,它本身是浅拷贝,如果拷贝的类持有其他类变量,必须让这个类变量的定义类实现Copy Construc......原创 2018-04-09 00:04:18 · 1454 阅读 · 0 评论 -
过滤 List 容器中重复(相同)的数据元素
Set< ? > set = new HashSet(list);list.clear();list.addAll(set);原创 2017-06-03 12:04:04 · 2125 阅读 · 0 评论