JAVA基础
文章平均质量分 73
李灵晖
正走在技术道路上的求知者
展开
-
java基础入门-父类引用子类对象(2)-抽象类
抽象类:具有抽象方法的类,需要使用abstract关键字修饰 关系图 下面上代码 package com.ray.testobject;/** * 抽象类 * * @author ray * @since 2015-05-02 * @version 1.0 * */public abstract class Perso原创 2015-05-02 21:04:18 · 2963 阅读 · 0 评论 -
java基础入门-hashcode与equals方法
equils方法的特性:1.自反性,对于任何非空引用x,x.equils(x)返回true2.对称性,对于任何引用x,y,x.equils(y)返回true,那么y.equils(x)返回true3.传递性,原创 2015-05-03 09:25:46 · 2301 阅读 · 3 评论 -
java-基础入门-泛型数组列表-解决运行时动态更改数组的问题
泛型数组列表,主要是为了解决运行时动态更改数组的问题平常我们会像下面的语句一样定义一个部门里面的人员,但是在实际业务当中,这个数组的大小往往是不确定的,如果定义过大,那么会浪费空间,定义过小,又不够用, 因为为了解决运行时动态更改数组的问题,我们提出下面的解决方案。package com.ray.object;import java.util.ArrayList原创 2015-05-04 08:49:16 · 1517 阅读 · 0 评论 -
java基础入门-对象与对象变量
java基础入门在上面的代码里面bill是对象,jack只是对象变量bill因为已经实例化,所以他可以打印具体的东西但是,jack没有实例化,所以如果需要打印东西,编译器直接报错原创 2015-04-24 08:24:13 · 1299 阅读 · 0 评论 -
java基础入门-strictfp关键字-严格浮点计算
strictfp关键字-增加关键字,使得方法或者类里面使用严格浮点计算原创 2015-04-18 22:38:01 · 1535 阅读 · 0 评论 -
java基础入门-不用main方法,也可以打印helloworld
java基础入门package com.ray.object;/** * 不用main方法,也可以打印Hello World! * * @author ray * @since 2015-04-29 * @version 1.0 * */public class Person { static { System.out.println("Hello World!"); Syste原创 2015-04-29 10:00:34 · 2984 阅读 · 1 评论 -
java基础入门-方法参数的调用是值调用而不是引用调用
java基础入门-方法参数的调用是值调用而不是引用调用package com.ray.object;/** * 方法参数的调用是值调用,而不是引用调用 * * @author ray * @since 2015-04-22 * @version 1.0 * */public class Person { private static void swap(原创 2015-04-29 09:55:12 · 1290 阅读 · 0 评论 -
java基础入门-数据访问器(set方法)与返回可变对象
今天写一个大家平常都比较忽略的一个问题set方法与返回可变对象我们平常在编程的时候,大部分的时候都是使用get、set方法来访问或者设置属性域但是在set的方法当中会出现一些比较特殊的例子,就像下面的代码,birthday手型,在set方法里面返回的是一个可变对象date,然后我们再通过这个date去改变属性域里面的值这种错误时经常出现在代码里面,正确的做法是在birthday原创 2015-04-27 09:23:31 · 1972 阅读 · 0 评论 -
java基础入门-构造器-构造函数
java基础入门-构造器package com.ray.testobject;public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } pub原创 2015-04-25 09:32:19 · 944 阅读 · 0 评论 -
java基础入门-预定义类与自定义类
java基础入门-预定义类与自定义类原创 2015-04-23 11:55:47 · 2916 阅读 · 1 评论 -
java基础入门-还原字符串的拼接的过程
平常我们很多时候都会使用字符串的拼接,但是为什么使用“+”号就是比stringbuilder慢,而且慢很多?实验package com.ray.teststring;/** * 对比拼接字符串的两种方式 * * @author ray * @since 2015-04-19 * @version 1.0 * */public class StringJoint {原创 2015-04-19 23:54:14 · 1365 阅读 · 0 评论 -
java-基础入门-自动装箱与自动拆箱留给我们的坑
其实,java在自动装箱和自动拆箱的过程里面,留了不少的坑给我们,我们下面将以integer这个类为基础讨论一下其实这里面主要涉及的是两点1.当使用Integer x=1,这样的方式来赋值的时候,其实,编译器当那个1是String,然后需要通过valueof的方法转换过来,但是在转换的过程中,他为了优化速度,使用了我们所不知道的缓存,因为在这里会出现一些坑2.Integer类里面重写了原创 2015-05-05 08:40:38 · 1832 阅读 · 1 评论 -
java基础入门-动态绑定-调用方法的过程
java-动态绑定-调用方法的过程原创 2015-05-01 08:08:55 · 1853 阅读 · 0 评论 -
java基础入门-静态导入
java基础入门在下面的代码中,展示的是静态导入的一些方便与不便如Math类这种更方面辨认的、Calendar类这种需要写很多东西的类,可以使用静态导入,从而降低读的门槛但是对于print这个方法,基本上是不会有人这么干的了package com.ray.object;import static java.lang.Math.pow;import static java.util.Cal原创 2015-04-29 10:23:42 · 1302 阅读 · 0 评论 -
java基础入门-对象与构造方法
java基础入门package com.ray.object;/** * 对象与构造函数 * * @author ray * @since 2015-04-22 * @version 1.0 * */public class Person { public Person() { } public Person(String name) { } public static v原创 2015-04-24 10:26:06 · 1029 阅读 · 0 评论 -
java基础入门-类、对象、实例的关系
关于类、对象、实例的关系我总结为下面的图class:类别,比如“人”这一类object:通过实例弄出来的一个具象的物件,比如:“bill”这个物件,属于“人”这一类instance:具象对象的过程,比如:填充“人”这个类里面的属性域,最后形成“bill”这个人的过程,重点是过程,所以平常也叫实例化但是我个人更加倾向于第二个图class,说白了就是类型,就像上面说的“人”原创 2015-04-22 08:34:42 · 1376 阅读 · 0 评论 -
java基础入门-for循环的一些特殊例子
在for循环里面使用doublepackage com.ray.testfor;/** * 在for循环里面使用double类型 * * @author JMSCADMIN * @since 2015-04-20 * */public class UseDoubleInFor { public static void main(String[] args) {原创 2015-04-20 08:24:53 · 1728 阅读 · 0 评论 -
java基础入门-final关键字在类、属性域、方法里面的使用
java基础入门-final关键字在类、属性域、方法里面的使用原创 2015-05-01 21:13:43 · 1744 阅读 · 0 评论 -
java基础入门-你不知道的string-不可改变性与编译器优化
1.不可改变性package com.ray.teststring;/** * 不可改变性 * * @author ray * @since 2015-04-19 * @version 1.0 * */public class UnChangabel { public static void main(String[] args) { String greeti原创 2015-04-19 23:33:54 · 1478 阅读 · 0 评论 -
java基础入门-对象的浅克隆与深克隆
这里面涉及到两个类,一个是person类,一个是测试类test首先我们说到的是浅克隆,对某个对象实施Clone时对其是一无所知的,它仅仅是简单地执行域对域的copy,如果是基本数据类型(int,float,char等)到没什么问题,基本遇上如string,Integer等不可变对象的时候也没有什么问题,但是如果遇上了date这个可变对象,或者是自己定义的可变对象,他只是简单的复制一些引原创 2015-05-07 09:31:56 · 1373 阅读 · 0 评论 -
java基础入门-泛型(1)-为什么需要使用泛型?
为什么需要使用泛型?1.代码复用2.保证类型安全3.编程的便利下面上代码说明代码复用1)建立一个Animal的父类package com.ray.test;public class Animal { private String name="Animal"; public String getName() { return name; } pub原创 2015-06-03 11:34:28 · 2214 阅读 · 0 评论 -
java基础入门-arraylist存储开销
今天我们来看一下arraylist的存储开销,因为在项目当中,我尝试了一个非常大的arraylist,然后内存爆了所以我看了下源码,原来arraylist的存储开销是比较大的,先上代码import java.util.ArrayList;public class Test { public static void main(String[] args) { Array原创 2015-06-29 17:10:58 · 1756 阅读 · 0 评论 -
java基础入门-ZipOutputStream打包下载
今天跟大家聊聊使用ZipOutputStream打包下载,我下面是使用ant的jar打包的,因为他对应中文的支持比较好大家也可以使用java.util.zip包里面的工具类打包,但是他对于中文不友好,很多都是乱码的(包括注释、文件名、打包名)import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.Z原创 2015-07-09 10:29:54 · 6267 阅读 · 0 评论 -
java基础入门-对象流与序列化
概念对象序列化:将对象输入到流里面,并在之后将其读回。注意事项对象需要实现Serializable接口,Serializable接口没有任何方法,不需要重写由于对象可能会重复使用,对象暂用不再是原来的内存地址,因此,序列化过程中引入序列号这个东西,如下图序列化用途对象通过序列化,然后在网络中传输,不同的机器负责不同的计算部分,从而实现分布式计算,提高计算的效原创 2015-07-09 11:39:51 · 1217 阅读 · 0 评论 -
java基础入门-多线程同步浅析-以银行转账为例子
在说之前先普及一下线程是什么?线程:说白了就是一个任务片段进程:是一个具有独立功能的程序关于某个数据集合的一次运行活动,一个进程有一个或者多个线程线程与进程的本质区别就是有么有数据共享空间,线程之间可以共享数据,进程不可以下面进入主题:线程间的同步由于现在业务流程增加,业务节点也增加,使用业务的人员也同时增加,这个时候就不可避免的出现并发问题,多个线程同时访问操原创 2015-07-02 08:54:07 · 4973 阅读 · 0 评论 -
java基础入门-建立可以多客户端链接的ServerSocket
承接上一篇文章,今天谈论一下可以多客户端链接的ServerSocket。这里面注意涉及到的技术点是:1.ServerSocket2.多线程这次我们分成两个类来实现,先上代码:package com.test.socket;import java.io.IOException;import java.io.InputStream;import java.io.Ou原创 2015-07-27 17:01:24 · 1693 阅读 · 0 评论 -
java基础入门-float四舍五入保留两位小数注意的地方
float四舍五入保留两位小数注意的地方最近在codewars做了一道非常简单的题目,但是它却花了我20来分钟,虽然最后解决了,但是中间发觉对于java的基础实在不行,回去要好好补一下不说这么多,上题目:就是写一个方法,把英里每加仑换算成公里每升,保留两位数一开始写的时候是没有问题,问题出现在保留两位数那里,我上一个测试代码import java.util.regex.Pa原创 2015-07-29 09:06:18 · 6228 阅读 · 0 评论 -
java基础入门-建立简单的ServerSocket
今天说说建立小型的服务器。一般服务器都是循环执行下面几个流程:1.接收数据流从客户端接受命令2.解码3.收集需求4.通过数据流返回数据下面上源码:package com.test.socket;import java.io.IOException;import java.io.InputStream;import java.io.Ou原创 2015-07-23 12:30:36 · 1395 阅读 · 0 评论 -
从头认识java-6.6 final(1)-属性域
这一章节我们将来讨论一下final。1.特性(1)对于常量,使用final之后就不可变因为使用了final之后,id就没有了set方法,因此,不能对id进行操作,即便new之后直接对id进行操作也不可以package com.ray.ch06;public class Test { private final int id = 1; public int getId() { retu原创 2015-11-02 17:09:38 · 2567 阅读 · 10 评论 -
从头认识java-1.6 多态
这一章节我们来简单讨论一些多态,java三大特性的最后一个。1.概念多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术原创 2015-10-19 12:19:15 · 2035 阅读 · 0 评论 -
从头认识java-6.6 final(3)-方法
这一章节我们来说一下final修饰的方法。1.final与public其实,使用final修饰方法,只不过就是不想继承的时候被修改。一般我们继承的时候都可以覆盖public的方法,如下:package com.ray.ch06;public class Sub extends Father { @Override public void say() { }}class Fathe原创 2015-11-03 22:33:46 · 1686 阅读 · 0 评论 -
从头认识java-6.6 final(4)-类与忠告
这一章节我们来讨论两个话题,一个是使用final标识的类,一个是使用final的忠告。1.使用final表示的类主要目的就是不想其他程序员继承这个类,而且类里面的东西永远不变。package com.ray.ch06;public class Sub extends Father {//抛异常}final class Father {}上面是错误的代码,编译器抛异常,sub不能够继原创 2015-11-03 22:44:37 · 2091 阅读 · 0 评论 -
从头认识java-6.7 初始化与类的加载
这一章节我们来讨论一下初始化与类的加载。简单的说,类是在static成员被访问的时候加载的。我们下面举一个比较复杂的例子,然后解释一下加载和初始化的顺序。package com.ray.ch06;public class Sub extends Father { private int b = print("b");// 5 private static int c = print("c原创 2015-11-03 23:07:01 · 2951 阅读 · 16 评论 -
从头认识java-1.8 创建和操纵对象(2)
接着上一章节,我们继续聊创建和操作对象的话题。(2)基本类型创建与运算上面的存储提到,一般new的对象是放在堆里面,而对象与变量直接的关系是放在栈里面,其实栈还有其他东西,就是基本类型所存储的数值,这样使得运算更快。下面是基本类型的一些信息:简单类型booleanbytecharshortIntlongfloatdoublevoid二进制位数18161632643264--封装器类BooleanB原创 2015-10-20 16:57:00 · 1799 阅读 · 1 评论 -
从头认识java-1.2 对象-服务提供者
这一章节我们来讨论一下怎么理解对象?1.服务提供者对象:来源于“Object”,中文说的比较抽象,个人更倾向于台湾香港的译法“物件”,个人实实在在的感觉,不用那么虚,当然,如果叫实例也是比较好理解。对象,我们可以想象成服务的提供者。它包含了一组数据以及一些可执行的方法。例如:package com.ray.ch01;public class Bird { private String na原创 2015-10-14 20:31:01 · 4114 阅读 · 1 评论 -
从头认识java-1.7 单根继承与集合
这一章节我们来简单介绍一下单根继承与容器。1.单根继承概念:单根继承,意味着所有类的继承,都继承自单一的基类的继承模式优点:(1)所有对象都具有一个共用接口,归根到底都是相同的基本类型。package com.ray.ch01;public class Jack extends Object {}其实,当我们建立一个新的类时,它是默认继承Object这个根类的,因此我们在建立一个新类的时候原创 2015-10-20 10:07:03 · 2972 阅读 · 0 评论 -
从头认识java-1.8 创建和操纵对象(1)
这一章节我们来讨论一些创建和操纵对象。说来,上面的两个话题都看似简单。例如:使用new创建对象:new String()使用new来创建了一个文本对象。使用引用操纵对象String s;新建一个s变量,s也是引用String这个类所创建的对象。但是需要注意的是,如果单纯只是上面的那句,当s调用对象的方法时,系统将会出现异常,因为s还没有初始化。所以,一般的做法是:String s=new Stri原创 2015-10-20 14:04:26 · 2264 阅读 · 0 评论 -
从头认识java-1.4 复用代码
这一章节我们来讨论一下复用代码。1.为什么?这一点我也不详细展开了,随便说说都可以说出几个理由。笔者总结了一下:对于老板:降低成本,缩短开发时间,追求利润最大化对于teamleader:加快进度,压缩工期,最短时间交付最多项目对于程序猿:不用加班2.怎么做?笔者分成三个方面来描述:1)在方法层面:例如:我们平常在很多地方都需要时间这个东西,但是我们就可能复制粘贴下面的代码Calendar cale原创 2015-10-15 17:12:23 · 2691 阅读 · 1 评论 -
从头认识java-1.5 继承(2)
接着上一章节,我们来继续介绍继承。1.子类调用方法时的查找方法的顺序:我们继续以上一章节的动物代码为例:package com.ray.ch01;public class Animal { private String name; private long id; private String location; public void eat() { System.out.p原创 2015-10-16 15:15:15 · 2053 阅读 · 1 评论 -
从头认识java-1.3 隐藏具体实现
这一章节我们来聊聊隐藏具体实现。一般来说,编程分为类的创建者与类的使用者,创建者将一部分脆弱的代码隐藏起来,只暴露某些必须的方法给使用者,这样,创建者就可以根据需要修改隐藏部分,而不会影响使用者的调用。1.为什么需要隐藏具体实现。答案:减少bug,降低脆弱代码被修改的风险。例如:package com.ray.ch01;public class Bird { private String原创 2015-10-15 11:58:12 · 2394 阅读 · 0 评论