
Java语言学习
文章平均质量分 94
该专栏记录了本人由C++转Java的整个学习历程。先是记录了一些最基础的概念理解,比如面向对象、类与继承等;接着是记录了本人所做的一些Java项目,从画图板到五子棋等;最后是记录Java的一些语言特性,包括String的equals方法解析等。想要入门Java的同学可以跟着这个专栏的节奏走。
Alexwym
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
加解密系统(包含DES、RSA等加密算法)
最近和小伙伴一起构建了一个包含仿射、流密码RC4、流密码LFSR+JK,DES及RSA的加解密系统。界面包括加解密算法选择框,加密解密按钮,加密明文信息框以及解密密文信息框。完整代码已经上传到github上了,里面的README.md有具体的操作说明教程,需要的同学可以自取,地址:https://github.com/Alexlingl/Cryptology下面就大致介绍一下这个加解密系统...原创 2019-01-15 19:33:07 · 5844 阅读 · 0 评论 -
如何用intellij idea新建一个java web+Servlet项目
本文装载自:https://blog.csdn.net/qq_35164169/article/details/76146655个人转载只是为了记录一下,日后遇到问题便于查看。 创建一个JAVA-web项目的前提:1、下载并安装JDK2、安装并配置Tomcat服务器下面开始创建JAVA-web项目:1、File——>new——>Project... ...转载 2018-09-16 17:02:56 · 823 阅读 · 0 评论 -
String、StringBuilder和StringBuffer
一、三者区别String每次增加数据都会开辟新空间,存储数据,然后将之前的那一块空间通过GC进行回收StringBuilder是可变长度的,数据增加是直接在现有的空间中进行操作。但是它不是线程安全的。StringBuffer也是可变长度的,数据增加也是直接在现有的空间中进行操作。但是它是线程安全的。(StringBuilder和StringBuffer每次都会多开辟一些空间,避免每...原创 2018-08-25 09:17:49 · 365 阅读 · 0 评论 -
Java异常机制处理
一、Java异常的关键字1.try{} 有可能出现异常的代码2.catch{} 根据从try{}语句块中获取的异常和()中的异常类型来进行处理3.finally{} 不管是否发生异常,都会执行的语句块4.throw 从方法中抛出一个异常,给方法本身5.throws 将方法中的异常抛出给调用者 二、Java异常体系 三、异常的分类系统的Exceptio...原创 2018-08-24 23:22:24 · 374 阅读 · 0 评论 -
Java中的关键字和保留字(共53个)
一、概念Java关键字(Key Word): 对Java的编译器有特殊的意义,他们用来表示一种数据类型或者表示程序的结构.保留字(Reserve Word):即它们在Java现有版本中没有特殊含义,以后版本可能会作为有特殊含义的词,或者该词虽然在Java中没有特殊含义,以后版本也不打算使用,但在其它语言中有特殊含义,不宜在Java中定义为变量名称等,因为容易混淆。注意:关键字和保留字...原创 2018-08-22 15:15:37 · 21368 阅读 · 4 评论 -
Java反射机制
平常在进行Java编程的时候,有时我们的代码中需要去获取某个类的一些信息,比如它的构造方法,它的属性等等,那我们该怎么去获取呢?(除了直接看源代码。。。有些源代码是不给看的)第一种方法,通过类对象来获取,比如:Client client=new Client;我们可以通过client来调用Client的属性方法等信息。但是这里会有一个问题,那就是私有属性和方法(private)我们是获取不到的。J...原创 2018-08-19 23:41:17 · 376 阅读 · 0 评论 -
JAVA异常处理机制(二)——throws/throw的区别和使用
JAVA中throw和throws的区别:https://www.cnblogs.com/xiohao/p/3547443.html区别:(摘自上面的博客)1、throws出现在方法函数头;而throw出现在函数体。2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。3、两者都是消极处理异常的方式(这里的消极并不...原创 2018-07-27 19:29:15 · 23612 阅读 · 1 评论 -
JAVA的异常处理机制(一)——try...catch...finally
在编程语言中,异常定义了程序中遇到的非致命的错误,比如,程序要打开一个不存的文件、网络连接中断、除零操作、操作数越界、装载一个不存在的类等情况。这些异常错误往往会导致程序中断,无法正常执行。异常处理机制可以防止程序在出现异常时直接崩溃。它可以让程序继续执行,并且处理相应的错误(比如:打印出错误信息等)。今天我们就来看一下JAVA的异常处理机制。一、基本格式 try { ...原创 2018-07-27 16:47:37 · 2857 阅读 · 0 评论 -
JAVA简单聊天室的实现
鉴于之前有不少同学在跟我要客户端的代码,我近期整理了一下,把整个工程都传到github上了。地址:https://github.co/Alexlingl/Chatroom里面有比较详细的工程运行教程,这篇博客则主要对工程的代码实现进行介绍,没有通信知识基础的同学,在看这篇博客之前可以先看下我通信板块的另外几篇博客:《JAVA通信(一)——输入数据到客户端》《JAVA通信(二)——实现客...原创 2018-07-26 18:45:49 · 54443 阅读 · 17 评论 -
Hashtable和HashMap
前不久用JAVA写了一个简单的哈希表,但是在和Hashtable、HashMap进行性能测试比较时,发现相差得有点大,于是专门去探究了一下Hashtable和HashMap的一些特性。一、Hashtable和HashMap的不同1.继承对象不同Hashtable继承Dictionary类,而HashMap继承Map类继承AbstractMap类。2.哈希表的初始容量和扩展方...原创 2018-07-24 10:48:11 · 1182 阅读 · 0 评论 -
JAVA通信(三)——实现多人聊天
《JAVA通信(一)——输入数据到客户端》《JAVA通信(二)——实现客户端和服务器的通信》前面我们是已经实现了客户端和服务器的通信,但是还存在着一个问题,那就是服务器一次只能跟一个客户端通信。通俗讲就是你使用QQ时一次只能和一个人聊天。今天我们继续完善一下这个通信程序,实现多人聊天。一、多线程如果我们要实现多人聊天,那么我们就必须为每一个客户机创建一个线程。这个线程用来处理服务器...原创 2018-07-23 09:37:32 · 9442 阅读 · 4 评论 -
JAVA通信(二)——实现客户机和服务器通信
前面一篇博客我们简单地理清了JAVA创建服务器,以及客户机连接服务器的流程,今天我们继续往下学习,实现客户机和服务器的通信。由于基本概念我们已经在前一篇博客说清楚了,这里我们就不再进行赘述。(不清楚的可以先阅读下我的前一篇博客JAVA通信(一)——输入数据到客户端)具体代码package communicatetest1;import java.io.IOException;imp...原创 2018-07-22 17:15:36 · 7201 阅读 · 1 评论 -
JAVA通信(一)——输入数据到客户端
前面我们介绍了通信技术的基础知识,今天我们尝试来用JAVA来创建一个简单的服务器,这个服务器将实现接收客户机发送过来的信息,并把信息再传回给客户机。服务器指的是等待别人来连接的机器。客户机,指的是主动链接别人的机器。一、JAVA中服务器和客户机的信息传输过程建议大家在学习JAVA的通信之前先把JAVA中的文件的读取和输出先搞懂。(可以参考我的另一篇博客《JAVA文件读取和写入(内附简单的代...原创 2018-07-21 19:06:18 · 7564 阅读 · 5 评论 -
JAVA中的hashcode()和equals()
最近在探究JAVA中的equals方法时,发现很多地方都会强调如果你重写了equals方法就必须重写hashCode方法,对这一点感到比较迷惑,于是就去探究了一下关于hashcode和equals之间的关系,解决了这个疑惑点。一、hashcode()hashcode是jdk根据对象的地址或者字符串或数字算出来的int类型的数值,也就是哈希码,哈希码并不是完全唯一的。它的对应关系如下:...原创 2018-07-18 16:19:48 · 395 阅读 · 0 评论 -
JAVA中==和equals的区别
在JAVA中,==和equals两者都是比较是否相等,但是比较的对象有所不同。在开始讲两者的区别之前我们先来了解一下JAVA虚拟机中的内存结构。Java最主要的三块内存:栈——是线程私有的,用来存放局部变量(对象引用和基本数据类型,而不用于存储对象);堆——是程序共享的,存放对象实例数据(当需要一个对象时,使用new写一行代码,当执行这行代码时,会自动在堆里进行存储分配。);非堆——主要用...原创 2018-07-18 11:06:02 · 2946 阅读 · 0 评论 -
JAVA文件读取和写入(内附简单的代码实现)
最近在测试链表、哈希表等数据结构的性能时,涉及到了文件的读取和写入操作。毕竟十万级的数据纯靠手动输入显然是不可能的。然后由于文件读取和写入格式的复杂性,导致JAVA中有很多不同功能的类,它们各自对应着不同的读/写格式。今天我们将简单介绍一下JAVA中文件处理类的继承关系,并提供一个简单的解决方案。后期我会另外再写一篇博客来深入探究这些文件类。一、文件类的继承关系(图片出处:https:...原创 2018-07-17 15:36:18 · 60620 阅读 · 4 评论 -
JAVA赋值和C++赋值的区别
前些时候在用JAVA实现哈希表的时候遇到了一个巨坑的错误,由于没有了解JAVA和C++赋值操作的区别,因此耗费了不少时间才找到了错误的原因所在。一个由于JAVA的赋值和C++赋值的区别所引起的错误。赋值一般分为变量赋值和对象赋值,下面我们分别通过两段简单的代码来探究一下C++和JAVA中赋值操作的特点。一、C++中的变量赋值和对象赋值C++的测试代码段如下:#include<i...原创 2018-07-16 19:50:50 · 1644 阅读 · 0 评论 -
静态方法和非静态方法的区别JAVA
最近在写JAVA程序的时候报了一个错。 No enclosing instance of type FileRead is accessible. Must qualify the allocation with an enclosing instance of type FileRead。翻译一下,大致意思就是:无法访问FileRead类型的封闭实例。必须使用FileRead类型的封闭实例...原创 2018-07-15 20:45:59 · 5693 阅读 · 0 评论 -
生产消费模型
一、模型解析生产消费者模型在我们的日常生活中是很常见的。比如我们去超市买东西。那么我们就是消费者,而制造这些东西的人就是生产者,超市就是一个大型的缓冲区。二、构成模型的必备条件——三种关系、两类角色、一类交易场所三种关系:消费者和消费者——互斥关系、生产者和生产者——互斥关系、生产者和消费者——互斥和同步。两类角色:生产者——数据的生产者、消费者——数据的使用者一类交易场所:缓冲区——生产者和消费...原创 2018-07-12 20:17:24 · 1578 阅读 · 0 评论 -
面向对象的三大特征和六大基本原则
一、面向对象的三大特征封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。封装的目的有两个,一是增强安全性和简化编程。使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。二是降低不同类之间的影响。封装使一部分成员充当类与外部的接口,而将其他的成员隐蔽起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,...原创 2018-07-12 15:06:27 · 5169 阅读 · 0 评论 -
抽奖小程序(多线程)
前面我们通过两种不同的线程模式来实现了小球运动。一种是多个子线程,一种是单个子线程。今天我们再来做一个简单的抽奖程序加深对线程的理解。一、程序,进程,线程的储存位置...原创 2018-07-11 17:31:13 · 2348 阅读 · 0 评论 -
小球碰撞(单个子线程)
前面我们利用多线程实现了一个多个小球运动的程序,但是我们知道每个操作系统所能开辟的线程数量是有限的,并且线程越多,程序的运行性能肯定会越低的。因此,我们就想着把它转变为一个单线程的程序。一、线程的理解1.线程,是在进程中独立运行的子任务。为什么需要多线程编程呢?举个简单的例子,比如坦克大战的游戏。但游戏开始时,我们要求画面上要不断地生成新的飞机,但同时我们又要控制自己的飞机进行移动。如果我们只有一...原创 2018-07-10 11:33:26 · 480 阅读 · 0 评论 -
多线程的概念和JAVA实现
多线程编程,相信大家或多或少都有听到过。以前对这个概念的理解比较模糊,最近写了一个简单的JAVA程序来帮助自己理解这个概念。一、什么是程序?什么是进程?什么是线程?A.程序:程序是一个指令序列。执行某一个进程所需要的所有文件,这些文件最后都会被翻译成指令序列。B.进程:进程是正在运行的程序的实例。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线...原创 2018-07-05 10:42:58 · 446 阅读 · 0 评论 -
JAVA五子棋的实现(三)——人机对战(权值法)
完整代码已上传到github上,地址:https://github.com/Alexlingl/GoBang。有需要的可以自取。五子棋系列博客(总共三篇,从简单功能简单界面到人机对战,以及较美观的登录及对战界面。第三篇博客中有最终实现的界面效果):JAVA五子棋的实现(一)JAVA五子棋的实现(二)在JAVA五子棋的实现(二)中我们已经实现了以下几个功能:1.判断输赢;2.实...原创 2018-07-01 18:04:12 · 16934 阅读 · 44 评论 -
JAVA五子棋的实现(二)
完整代码已上传到github上,地址:https://github.com/Alexlingl/GoBang。有需要的可以自取。五子棋系列博客(总共三篇,从简单功能简单界面到人机对战,以及较美观的登录及对战界面。第三篇博客中有最终实现的界面效果):JAVA五子棋的实现(一)JAVA五子棋的实现(三)——人机对战(权值法)前面我们已经实现了一个初步的五子棋,已完成的功能如下:...原创 2018-06-29 16:21:34 · 14074 阅读 · 24 评论 -
JAVA五子棋的实现(一)
前面在实现完一个JAVA的面板之后,就想着继续实现一个相较于面板更复杂一点的程序——五子棋。但是我在在搜索资料的时候,发现网上很多关于五子棋实现的博文都是一步到位,直接给个源代码,不是很适合新手学习。所以我这里打算记录一下自己实现五子棋的整个过程,大致会分为三四个阶段。今天我们先来实现第一个阶段的五子棋。同样的我们在着手写代码之前我们需要先做一些准备。完整代码已上传到github上,地址:h...原创 2018-06-28 20:45:31 · 60299 阅读 · 29 评论 -
画板的实现(二)
前面我们已经实现画板的一部分功能,今天我们接着来实现画板的另一部分的功能。一、画板所要实现的功能1.让用户能够选择图形,根据所选的图形来作图;2.实现画直线、矩形、椭圆、圆角矩形、填充3D矩形、图片、等腰三角形3.实现画曲线、刷子、橡皮、虚线、喷枪前面我们已经实现了功能一和二,我们接着来实现功能三二、需要用到的API类javax.swing.JFrame 窗体类java.awt.FlowLay...原创 2018-06-17 18:52:19 · 1020 阅读 · 0 评论 -
画板的实现(一)
在前面我们已经初步实现了一个简单的登录界面,今天我们来尝试实现一个画板。同以前一样我们把画板的实现分为多个部分。在开始写程序之前我们还是得先做一些准备。一、实现画图程序所需的API类有哪些?javax.swing.JFrame 窗体类java.awt.MouseListener 鼠标事件接口,...原创 2018-06-17 17:38:51 · 2898 阅读 · 0 评论 -
JAVA登录界面的实现(二)
前一篇文章中我们已经实现了一个基本的登录界面。今天我们继续完善一下这个登录界面,给这个界面添加一个登录验证的功能。首先根据这个功能我们先来整理一下设计思路验证账号密码1.对登录按钮设置一个事件监听机制,监听按钮是否被点击。2.等登录按钮被点击后,我们要获取账号和密码文本输入框中的信息,然后用if语句进行判断3.如果正确,则利用JFrame类再去新建一个窗口,并且利用属性来关闭原来...原创 2018-06-16 10:28:13 · 36971 阅读 · 43 评论 -
JAVA登录界面的实现(一)
学习JAVA的过程中,登录界面是多数人第一个实现的小程序。今天我们就来做一下登录界面。当然在动手写代码之前我们要先做一些准备工作,我们要先了解JAVA提供的图形界面类有哪些,以及有哪些常用的组件类和辅助类。一、JAVA提供的图形界面类1.AWT组件AWT组件是JDK1.0的时候推出的图形界面类,它的名字是根据包名而来的:java.awt。AWT组件是在实现的时候采用的是c和c+...原创 2018-06-16 09:42:57 · 91504 阅读 · 18 评论 -
类、抽象类和接口的区别
在JAVA学习中我们经常会听到接口、抽象类这两个概念。那它们到底是什么呢?我们可以这么先这么粗略地理解抽象类和接口。它们是一种特殊的、受到各种限制的类。具体是受到什么限制呢?我们下面来看一下它们和类的不同。首先,我们先来看一下接口。JAVA中定义接口的关键字:interface它的定义格式:public interface 接口名 (extends 其他接口名,...){//定义常量(public...原创 2018-06-14 22:44:40 · 996 阅读 · 0 评论 -
面向对象中类的继承
今天我将从以下四个方面来讲述一下关于类的继承的学习和理解。一、为什么需要使用继承?1.现实中存在着这种子集间的包含关系;比如: 学生 包含 大学生、高中生、初中生;2.减少重复的代码;如果我们一个个要实现大学生、高中生、初中生的类3.提高程序的扩展性。二、JAVA继承的语法格式JAVA中类继承的关键字:extends格式:public class 类名(子类、派生类、超类) extends......原创 2018-06-13 12:53:13 · 636 阅读 · 0 评论 -
面向对象的理解(二)
由前一篇文章,我们已经初步知道了JAVA中对象的概念。接下来,再补充几点关于类和对象的概念理解。分别是构造方法、方法重载以及this关键字一、构造方法。 定义构造方法的格式: 访问修饰符 构造方法名(数据类型 参数名){ } 注意点:1.构造方法名必须要和类名完全一致,包括大小写;2.构造方法不能定义返回值类型;3.JAVA会给类提供一个五参数的构造方法,如果你自定义了构造方法...原创 2018-06-11 13:07:50 · 528 阅读 · 0 评论 -
面向对象的理解(一)
在学习编程语言的时候我们经常会听到这样的话。C是一门面向过程的语言。C++是在C语言的基础上进行扩充和完善发展而来的,它兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言。而JAVA是一门完全面向对象的语言。因此对于学过C++想转战JAVA的同学,首先就得弄清面向对象这个概念。 那么面向对象和面向过程的区别是什么呢? 面向过程就是在分析出解决问题时,首先把问题分解成若干...原创 2018-06-11 09:59:53 · 2075 阅读 · 0 评论