
Java se
文章平均质量分 66
非正经程序员.
全网同名,关注让我们更进一步。
展开
-
如何做到不用中间变量来交换两个数的值
可以使用异或运算来实现两个数的交换。原理:异或即是相同为0,不同为1(二进制表达),其中一个数与任意一个给定的值连续异或两次,值不变,这就是位运算的原理。 例如: a = a^b^a;具体实现:public void swap(int a,int b){ a = a^b; b = a^b; a = a^b;}原创 2017-04-10 22:44:15 · 1406 阅读 · 1 评论 -
浅谈 Java 中的枚举
枚举也就是一一列举,常用来表示那些可以明确范围的集合,比方说性别,季节,星期,月份等。在 JDK 1.5 才出现枚举类,在没有出现枚举类之前,我们要表示几个确定的值通常会使用常量来表示,形如 public static final Integer SPRING = 1; public static final Integer SUMMER = 2; public ...原创 2018-09-06 11:08:14 · 332 阅读 · 0 评论 -
Java 中的泛型
先来看一下以下 2 段代码,然后再进一步引出我们的泛型。 public static void main(String[] args) { List list = new ArrayList(); list.add("123"); list.add(456); Iterator it = list.iterator();...转载 2018-09-04 14:18:08 · 329 阅读 · 0 评论 -
异常了解一下
前段时间集合的整理真的是给我搞得心力交瘁啊,现在可以整理一些稍微简单一点的,搭配学习 ~突然想到一个问题,这些东西我之前就整理过,现在再次整理有什么区别嘛?我就自问自答一下,可能我再次整理会看到不一样的一面,会从源码和整体来看。其次,之前的整理都是在某个地方止步,可持续性较差,现在就尽力坚持住。因为还有你们再看 ~ 另外,欢迎各行各业的同学们给我投稿,让大家都能互相了解,岂不是很棒!进入正...原创 2018-08-24 09:39:39 · 464 阅读 · 0 评论 -
Java 集合之 Map
Map 就是另一个顶级接口了,总感觉 Map 是 Collection 的子接口呢。Map 主要用于表示那些含有映射关系的数据,存储的是一组一组的键值对。Map 是允许你将某些对象与其它一些对象关联起来的关联数组。举个例子感受一下:我想通过学生的学号来找到对应的姓名就可以使用 Map 来存储 Map< Integer ,String > 。我想知道每个学生一共选了几门课可以这样存储...原创 2018-08-22 17:20:25 · 392 阅读 · 0 评论 -
Java 集合之 Collection
集合就是一组数的集合,就像是一个容器,但是我们应该清楚的是集合中存放的都是对象的引用,而不是真正的实体。而我们常说的集合中的对象其实指的就是对象的引用。我们可以把集合理解为一个小型数据库,用于存放数据,我们对集合的操作也就是数据的增删改查,在 Java 中有两个顶层接口 Collection 和 Map 用于定义和规范集合的相关操作。这篇文章主要说一下集合框架中的 Collection 部分。...原创 2018-08-18 22:16:33 · 556 阅读 · 0 评论 -
String 与不可变对象
什么是不可变对象 ?不可变对象指的是在创建一个对象之后 ,不能再改变它的状态 ,那么这个对象就是不可变的 。不能改变状态的意思是 ,不能改变对象内的成员变量 ,包括基本数据类型的值不能改变 ,引用类型的变量不能指向其它的对象 ,引用类型指向的对象状态也不能改变 。这里插播一下对象和对象的引用之间的区别 ,对象的引用是放在栈中的 ,而对象是放在堆中的 ,看这个例子 String s = "123...原创 2018-08-07 17:32:53 · 376 阅读 · 0 评论 -
接口和工厂设计模式
接口又是怎么一回事呢 ?接口就是一组规范 ,是在定义一种标准 。这说起来真的挺别扭的 ,我是这么理解的 ,当我们的抽象类全是抽象方法时 ,我们就可以定义接口了 ,那为什么不能继续用抽象类来表示而要定义一个接口呢 ?由于 Java 本身有单继承的局限 ,而接口是可以多实现的 。所以我就额外定义一个 interface 来表示哪些全是抽象方法的类 。相比于抽象类 ,我们可以感受出 Java 设计的初衷...原创 2018-08-01 19:04:11 · 1449 阅读 · 0 评论 -
抽象类和模板设计模式
总是以提问的形式来开始我的总结 ,为什么会出现抽象类 ?有哪些应用 ?上一次我们已经说过了 ,继承可以增加代码的复用性 ,子类可以把父类的方法拿过来直接用 ,也可以重写父类的方法 。那么好 ,假设有一个 Animal 父类中含有一个 “叫“ 方法 ,有 n 多个动物继承了 Animal ,结果由于动物的独特性每一个子类都需要重写父类的 “叫“ 方法 。那么问题来了 ,所有的子类都重写了父类的方...原创 2018-07-26 09:59:54 · 852 阅读 · 0 评论 -
常见的算法:二分法查找,冒泡排序和选择排序
今天主要说一下常见的算法 ,于是我百度了一下点进那 “ 牛逼 ” 的知乎看了一眼 ,完蛋了 ,这都是些神马 ??? 我怎么一个都不会呢 ,我要的可是那种很常见的算法啊 ,好吧 ,无形中又被深深的伤了一刀 ,好在我迅速调节状态 。管他呢 ,我就按照自己 low 的来吧 。进入正题 ,我要说的几种算法就是二分法查找 ,冒泡排序和选择排序 。以数组为例 ,谈谈它们在 Java 中的实现 。二分法查找...原创 2018-07-14 16:47:53 · 2587 阅读 · 0 评论 -
Java中的访问控制权限
Java 中是如何对访问权限进行控制的 ?Java 中的访问控制权限可以分为 4 级 ,分别是 public ,protected ,default ,private 。放一张看了很多遍却不一定记住的图 。 图中打 Yes 即表示可以访问 ,举例说在同一个类中 ,不管你用什么样的访问修饰符修饰属性或方法 ,我都可以访问 。而在子类中 ,只能访问父类中被protected ,public ...原创 2018-07-19 21:08:31 · 2878 阅读 · 0 评论 -
Java中的数据类型
我们学习Java就是为了编写程序完成功能,而什么是程序呢?程序 = 数据结构 + 算法。 分开看,数据结构指的是数据与数据之间的关系,那我们先来了解一下Java中的数据都是怎么表示的呢 ?也就是说数据都有哪些不同的类型呢 ?顺带说一下变量的概念,在Java中变量可以理解为是一个遥控器,而变量所代表的值就是电视机,我们是通过操作变量(遥控器)来操作不同的值(电视机)。而遥控器也有不同的型号的呀,...原创 2018-07-06 12:03:10 · 330 阅读 · 0 评论 -
Java 中的三大特性
我们都知道 Java 中有三大特性,那就是继承 ,封装和多态 。那我今天我就来说说这几个特性 。老样子 ,先问问自己为什么会存在这些特性 。首先说封装 ,封装就是使用权限修饰符来实现对属性的隐藏 ,同时提供一些共有的 get / set 方法来对数据进行访问 。这样怎么实现封装的效果的呢 ?我们可以在 get 或 set 方法内部添加一些逻辑控制语句 。比方说在设置年龄的时候 ,我就限制传入的...原创 2018-07-24 09:57:08 · 1557 阅读 · 0 评论 -
数组的介绍
数组是指一组数据的集合,且同一个数组中存在的数据都是同一类型的,我们用下角标来表示元素在数组中的位置,从 0 开始 。数组的长度表示数组中元素的个数,所以说,长度为 5 的数组的索引是从 0 ~ 4 。数组的声明就是在说明一下,哎,注意了,我需要一个容器来存放这些类型相同的元素 。声明的方式有这些。 int[] arr ; int arr[] 或是 对象的集合 People[] p ; 这样就...原创 2018-07-11 20:39:52 · 1196 阅读 · 0 评论 -
Java 中类的初始化过程
先来一张 JVM 中的内存模型 。 在Java 虚拟机原理这本书中介绍了类会被初始化的 5 种情况 。1 遇到 new getstatic putstatic 和 invokestatic 这 4 条指令时,这4 条指定分别对应使用 new 关键字创建对象,读取和设置一个静态字段(被 final 修饰的静态字段除外,因为已经在编译期间把结果放到常量池中了)和调用一个类的静态方法 。2...原创 2018-07-16 20:38:55 · 365 阅读 · 0 评论 -
对于面向对象的理解
按照惯例,先做一个简单的介绍,现在开始学习 Thinging in Java 4 ,一边看,一边记录,我都不想给自己设定时间安排了,毕竟很少实现过。所以就这样吧!不定期的更新,我都会放到专栏中的。所以我可能会有很多表述和书中是一样的,外加一些自己的理解吧。我们常说的一句话是“一切皆对象”这话也就说说吧,理解吗?其实并不理解。没关系,我们可以假装理解了。那我就来结合书中的观点说一下面向对象的...原创 2018-06-17 21:15:57 · 451 阅读 · 0 评论 -
Java 语言整体介绍
Java是如何出现的呢?这就要回到1991年,那时候随着单片机的发展,出现了很多微型的系统,Sun公司在这个时候就成立的一个项目组,成员就有我们熟知的“Java之父” 詹姆斯·高斯林,起初的目标是为了占领计算机在家电产品上的嵌入式应用这个市场。首选的开发语言是C++,但是在具体的开发中,发现有写需求是C++不能满足的,比方说,跨平台(一个家电中可能包含多个厂商的芯片),还有就是C++系统过于庞大,...翻译 2018-06-14 11:23:15 · 886 阅读 · 0 评论 -
Java 中的 I/O
I/O 指的是 input 和 output ,也就是输入和输出,我们说的是 Java 中的 I/O,那我们就在站在虚拟机的角度去看看有哪些输入和输出。输入又可以称为数据源端,能想到的会有,文件,网络,控制台手动输入。而输出又可以称为数据接收端,能想到依旧还是那几个,输出到文件,网络,控制台。 那好,目前只是理清楚了数据从哪里来到哪里去,然而,我们的数据交互肯定不是这么的简单,我们还需要考虑...原创 2018-09-10 10:58:51 · 645 阅读 · 0 评论