java之路
从零开始一步一个脚印,打好扎实的java语言基础。分为第一季入门,第二季重点整理、重新认识java,第三季收录面试题,第四季源码分析......
杨道龙
南京邮电大学硕士,某大厂Android开发,软件开发狂热爱好者,热爱分享知识,CSDN博客认证专家。在CSDN原创文章300多篇。
展开
-
《java入门第一季》之对文件和字符串进行MD5加密工具类
上一篇介绍了MD5加密算法,之前写的代码有些冗余,而且可读性很差。今天把对文本数据的加密,以及获取文件的md5值做一个封装类。代码如下:package com.itydl.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.i原创 2016-08-13 17:04:42 · 1250 阅读 · 0 评论 -
MD5加密
对于明文转“暗文”的逻辑应该放在业务层去做。对于用户输入的密码转为MD5基本代码如下所示:通过“暗文”再与数据库里面的暗文匹配,匹配成功就说明密码正确。package cn.ydl.md5;import java.security.MessageDigest;/** * MD5工具类 * 只有加密,无解密 */public final class Md5Util { pr原创 2016-06-28 21:08:42 · 2531 阅读 · 2 评论 -
《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复
这是基于HashSet集合的唯一性。/* * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 * * 分析: * A:创建随机数对象 * B:创建一个HashSet集合 * C:判断集合的长度是不是小于10 * 是:就创建一个随机数添加 * 否:不搭理它 * D:遍历HashSet集合 */代码写了出来:import原创 2016-06-11 23:28:11 · 3493 阅读 · 0 评论 -
《java入门第一季》之TreeSet存储自定义对象并保证排序和唯一
上一篇用一个简单的例子,介绍了treeset集合存储的内部过程,这里再完善其存储自定义对象保证唯一。需求:A: * 自然排序,按照年龄从小到大排序 * B: * 成员变量值都相同即为同一个元素自定义学生类给了出来:public class Student implements Comparable { private String name; p原创 2016-06-07 22:56:51 · 2002 阅读 · 0 评论 -
《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解
这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序。 * 排序有两种方式 * A:自然排序: 从小到大排序 * B:比较器排序 Comparatorimport java.util.TreeSet; * TreeSet集合的特点:排序和唯一 * * 通过观察TreeSet的add()方法,我们知道最终要看Tr原创 2016-06-06 22:46:26 · 2815 阅读 · 3 评论 -
《java入门第一季》之HashSet存储元素保证唯一性的代码及图解
上一篇介绍了HashSet存储自定义自定义对象时应该注意的问题http://blog.csdn.net/qq_32059827/article/details/51580642,这一篇对其内部结构稍作了解。用一张图,宏观认识,HashSet存储元素保证唯一性的原理:其实HashSet的代码直接自动生成,这里也是了解即可。原创 2016-06-03 18:15:53 · 2967 阅读 · 0 评论 -
《java入门第一季》之HashSet存储自定义对象问题以及注意事项
上一篇http://blog.csdn.net/qq_32059827/article/details/51578158写到存储字符串类型的时候出现了无序,而且这个无序不是随机那种无序,它是有一定存储规律的。上次存储的是字符串,那么这里看看存储自定义对象是不是也是同样的规律。其实这里有着很多的问题需要讨论。存储自定义对象,代码写了出来:import java.util.HashSet;原创 2016-06-03 18:03:30 · 3617 阅读 · 0 评论 -
《java入门第一季》之集合框架(Collection小儿子Set集合)
/* * Collection主要的连个儿子: * |--List * 有序(存储顺序和取出顺序一致),可重复 * |--Set * 无序(存储顺序和取出顺序不一致),唯一 * * HashSet implements Set:它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。(这次测的这样,下次就不一定这样) * 注意:虽然Set集合的元素无序,但是,原创 2016-06-03 13:38:45 · 1022 阅读 · 0 评论 -
15个易遗忘的java知识点
1、java中的基本数据类型以及所占内存大小(1)整形 byte 1字节 short 2字节 int 4字节 long 8字节 (2)浮点型 float 4字节 double 8字节 (3)字符类型 char 2字节(Unicode-16) (4)布尔类型布尔类型boolean比较特殊,尽管Java虚拟机定义了boolean类型,但虚拟机对b翻译 2016-06-03 13:23:08 · 2769 阅读 · 0 评论 -
《java入门第一季》模拟用户登陆注册案例集合版
需求:校验用户名和密码,登陆成功后玩猜数字小游戏。一、猜数字小游戏类:猜数字小游戏的代码见博客:http://blog.csdn.net/qq_32059827/article/details/51355259二、登陆注册接口。package cn.itcast.dao;import cn.itcast.pojo.User;/** * 这是针对用户进行操作的接口原创 2016-05-29 19:58:09 · 2427 阅读 · 0 评论 -
《java入门第一季》之Socket编程通信和TCP协议通信图解
Socket编程通信图解原理:TCP协议通信图解原创 2016-05-28 21:55:38 · 806 阅读 · 0 评论 -
《java入门第一季》之tcp协议下的编程实现键盘录入数据不断地往服务器端发送数据案例
这里要封装通道流,封装键盘录入数据流。同样地,还是两台电脑。一个客户端,一个服务器。客户端代码:import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.Output原创 2016-05-28 21:33:05 · 1470 阅读 · 0 评论 -
《java入门第一季》之tcp协议下的网络编程
tcp协议相对于udp更加安全。首先看一下需求:服务器端开启,多个客户端同时向服务器发送数据,看哪个客户端先到达。说明:这里我开启三个电脑实验,一台电脑写服务器端的程序,两台电脑开客户端的程序。服务器先开启程序,客户端同时开启发送数据。客户端的程序:import java.io.IOException;import java.io.OutputStream;import ja原创 2016-05-28 21:15:49 · 623 阅读 · 0 评论 -
《java入门第一季》之UDP协议下的网络编程小案例
需求,一台电脑发送数据,其他电脑都可以收到该数据。使用广播地址。发送端:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;im原创 2016-05-28 20:53:36 · 640 阅读 · 0 评论 -
《java入门第一季》之UDP协议下的网络编程详解
首先看一下UDP协议的图解:可以看到,分为发送端和接收端程序。直接上代码:发送端程序:import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/* * UDP协议发送数据:原创 2016-05-28 20:32:39 · 657 阅读 · 0 评论 -
《java入门第一季》之网络编程初探
由于在写有关javaweb的博客,在写到web服务器的时候需要回顾网络编程的知识,提前把网络编程放在前面写。直接上代码解释:import java.net.InetAddress;import java.net.UnknownHostException;/* * 如果一个类没有构造方法: * A:成员全部是静态的(Math,Arrays,Collections) * B:单例原创 2016-05-28 20:03:14 · 646 阅读 · 0 评论 -
《java入门第一季》之集合toString源码解析
代码: Collection c = new ArrayList(); c.add("hello"); c.add("world"); c.add("java"); System.out.println(c);打印输出:[hello world java]问题:为什么c输出的不是地址值呢?A:Collection c = new ArrayList();这是多态,所以原创 2016-05-29 19:42:44 · 1277 阅读 · 0 评论 -
《java入门第一季》之有趣的集合小案例---获取10个【1-20之间】的随机数,要求不能重复。
import java.util.ArrayList;import java.util.Random;/* * 获取10个【1-20之间】的随机数,要求不能重复。(注意:不是获取10个数,如果单纯获取十个数可能有重复的,这里是获取10个不重复的数。 * 所以统计变量要在判断不重复后增加。) * * 用数组实现,但是数组的长度是固定的,长度不好确定。 * 所以我们使用集合实现。原创 2016-05-29 19:27:09 · 1481 阅读 · 0 评论 -
《java入门第一季》之根据小案例体会泛型
泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有就说要使用泛型。一般来说就是在集合中使用。下面根据案例,加深体会泛型的作用。案例一:import java.util.ArrayList;import java.util.Iterator;/* * 泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有就说要使原创 2016-05-26 22:49:45 · 571 阅读 · 0 评论 -
《java入门第一季》之泛型引入
泛型的引入:首先看一段代码体会自动报错。// 看下面这个代码 自动报错 String[] strArray = new String[3]; strArray[0] = "hello"; strArray[1] = "world"; strArray[2] = 10;//因为指定了string类型,是不可以存储int类型数据的。会自动报错。 集合也模仿着数组的这原创 2016-05-26 22:42:19 · 535 阅读 · 0 评论 -
《java入门第一季》正则表达式小案例
案例一:当你登陆某个论坛,向发帖子留下自己qq号的时候,可惜你的号码就是留不下,总是输入*,或者其它奇妙的字符串。其实原理就是用了正则表达式替换。/* * 替换功能 * String类的public String replaceAll(String regex,String replacement) * 参数: regex - 用来匹配此字符串的正则表达式 replacem原创 2016-05-23 08:02:15 · 482 阅读 · 0 评论 -
《java入门第一季》之Random类和获取随机数案例
/* * Random:产生随机数的类 * * 构造方法: * public Random():没有给种子,用的是默认种子,是当前时间的毫秒值下的随机数,所以会一直变化 * public Random(long seed):给出指定的种子 long seed就是一个long类型的数据而已 * 给定种子后,每次得到的随机数是(相同的)。再次编译执行后的数据不变了。原创 2016-05-14 13:43:10 · 582 阅读 · 0 评论 -
《java入门第一季》之正则表达式小案例
案例一:判断手机号码是否满足要求import java.util.Scanner;/* * * 需求: * 判断手机号码是否满足要求? * * 分析: * 13436975980 * 13688886868 * 13866668888 * 13456789012 * 13123456789 * 18912345678原创 2016-05-11 13:09:14 · 552 阅读 · 0 评论 -
《java入门第一季》之Integer类和自动拆装箱概述
/ * int 仅仅是一个基本类型。int有对应的类类型,那就是Integer. * 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型——包装类类型。各个基本类型分配封装与之对应的类类型来对基本类型数据更方便的操作。 * byte Byte * short Short * int Integer(这个原创 2016-05-11 08:34:58 · 585 阅读 · 0 评论 -
《java入门第一季》之Arrays类
前面介绍了排序问题(见博客http://blog.csdn.net/qq_32059827/article/details/51362390);二分查找问题(见博客http://blog.csdn.net/qq_32059827/article/details/51363949)接下来用一个类快速实现排序和二分查找。Arrays类import java.util.Arr原创 2016-05-10 22:41:57 · 819 阅读 · 0 评论 -
《java入门第一季》之类面试题
面试题一: String,StringBuffer,StringBuilder的区别? * A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。 * B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高 面试题二: StringBuffer和数组的原创 2016-05-10 08:50:21 · 758 阅读 · 0 评论 -
《java入门第一季》之StringBuffer小案例
这里是针对其反转功能来举的例子,再对比之前写的一篇String类的反转功能,StringBuffer明显提高了代码量,提高了效率。import java.util.Scanner;/* * 把字符串反转 */public class StringBufferTest3 { public static void main(String[] args) { // 键盘录入数据原创 2016-05-10 08:41:57 · 414 阅读 · 0 评论 -
《java入门第一季》StringBuffer类小案例
/* * 把数组拼接成一个字符串 */public class StringBufferTest2 { public static void main(String[] args) { // 定义一个数组 int[] arr = { 44, 33, 55, 11, 22 }; // 定义功能 // 方式1:用String做拼接的方式 String s1 = array原创 2016-05-10 08:36:28 · 678 阅读 · 0 评论 -
《java入门第一季》之类String类小案例
String类有许多获取方法,API文档里面可查看。针对获取方法,给出小案例。/* * 需求:遍历获取字符串中的每一个字符 * 分析:用到两个方法: char charAt(int index) 表示获取字符串指定索引的字符 int length() 表示获取字符串的长度 */public class原创 2016-05-09 19:30:19 · 901 阅读 · 0 评论 -
《java入门第一季》之类小案例(模拟用户登录)
首先是做一个用户登录的小案例。在此基础上加入其它逻辑。import java.util.Scanner;/* * 模拟登录,给三次机会,并提示还有几次。如果登录成功,就可以玩猜数字小游戏了。 * * 分析: * A:定义用户名和密码。已存在的。 * B:键盘录入用户名和密码。 * C:比较用户名和密码。 * 如果都相同,则登录成功 * 如果有一个不同,则登录失败 * D:给三次机会,用循环改进,最好用for循环。 */原创 2016-05-09 19:03:59 · 1874 阅读 · 1 评论 -
《java入门》第一季之类(String类字符串一旦被赋值就没法改变)
毫无疑问,String类是java里面最重要的类之一。因此它有很多方法需要了解和掌握。原创 2016-05-09 13:07:40 · 1808 阅读 · 0 评论 -
《java入门第一季》之类(Scanner类)
/* * Scanner:用于接收键盘录入数据。 * * 前面的时候: * A:导包 * B:创建对象 * C:调用方法 * * System类下有一个静态的字段: * public static final InputStream in; 标准的输入流,对应着键盘录入。InputStream si = System.in; * * InputStr原创 2016-05-09 08:56:56 · 769 阅读 · 0 评论 -
《java入门第一季》之面向对象静态内部类和非静态内部类的区别
很感谢在内部类章节,“开心阳”先生给与的建议。使用静态内部类。这里就简单说一下静态内部类的使用。package com.devin;public class MyMain{ private static String name = "woobo"; private String num = "X001"; // 静态内部类可以用public,protected,原创 2016-05-08 22:40:32 · 624 阅读 · 0 评论 -
《java入门第一季》之面向对象匿名内部类面试题
内部类面试题原创 2016-05-08 18:42:58 · 995 阅读 · 0 评论 -
《java入门第一季》之面向对象(匿名内部类)
1、认识匿名内部类/* 匿名内部类 就是内部类的简化写法。 前提:存在一个类或者接口 这里的类可以是具体类也可以是抽象类。 匿名内部类的格式: new 类名或者接口名(){ 重写方法; };这代表的是一个子类对象 本质是什么呢? 是一个继承了该类或者实现了该接口的子类匿名对象。*/interface Inter { public abst原创 2016-05-08 18:25:34 · 842 阅读 · 5 评论 -
《java入门第一季》之面向对象(内部类到底在哪里?)
/* 内部类概述: 把类定义在其他类的内部,这个类就被称为内部类。 举例:在类A中定义了一个类B,类B就是内部类。 内部的访问特点: A:内部类可以直接访问外部类的成员,包括私有。 B:外部类要访问内部类的成员,必须创建对象。 内部类位置 成员位置:在成员位置定义的类,被称为成员内部类。 局部位置:在局部位置定义原创 2016-05-08 18:04:14 · 773 阅读 · 0 评论 -
《java入门第一季》之面向对象(修饰符的概念和总结)
还是由于eclipde等ide的强大功能,会自动提示你修饰符是否可行。所以对修饰符的作用了解即可:修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰符,public原创 2016-05-08 12:29:08 · 359 阅读 · 0 评论 -
《java入门第一季》之面向对象(形式参数和返回值问题的深入研究3)
/* 形式参数: 引用类型 接口:需要的是该接口的实现类对象这个时候就没什么了,和抽象类的解释差不多。*/interface Love { public abstract void love();}class LoveDemo { public void method(Love l) {原创 2016-05-08 08:45:12 · 685 阅读 · 0 评论 -
《java入门第一季》之面向对象(形式参数和返回值问题的深入研究2)
形式参数是引用类型 抽象类:/* 形式参数: 引用类型 抽象类:需要的是该抽象类的子类对象*/abstract class Person { public abstract void study();}class PersonDemo { public void method(Person p) { p.study();//如果形参是一个抽象类,则需要传递的原创 2016-05-07 22:48:25 · 680 阅读 · 0 评论 -
《java入门第一季》之面向对象(形式参数和返回值问题深入研究1)
对于形式参数和返回值问题,值得花心思搞明白。因为后面很多参数传递,基本是需要对形式参数和返回值问题比较熟悉才能搞懂。接下来三篇分别介绍,形式参数代表引用类型:(类名,抽象类,接口)时的“研究”。一:形式参数是引用类型 类名:/* 形式参数: 基本类型(太简单,不需要解释) 引用类型 类名:匿名对象的时候其实已经讲过了需要的是该类的对象(见博客地原创 2016-05-07 22:32:26 · 701 阅读 · 0 评论