![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
穆学习
所有牛逼的人在干牛逼的事之前总有一段苦逼的岁月,但你只要像傻逼一样坚持,终究牛皮
展开
-
Java学习——打印1-1000以内的水仙花数
Java学习——打印1-1000以内的水仙花数水仙花数:水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:370=33+73+00;371=33+73+13,370、371就是一个水仙花数注意:要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位public class MyTest { public static void main(String[]...原创 2019-04-01 19:31:03 · 10660 阅读 · 13 评论 -
Java学习——生产者-消费者模式与线程通信问题(管程法、信号灯法)
Java学习——生产者消费者模式与线程通信问题什么是生产者消费者模式?生产者消费者模式并不是23中设计模式中的一种,在面向对象编程中我们前人总结了一些比较好的设计模式,就像23种设计模式一样。但是面向过程编程的时候,我们前人也给我们总结了一些好的设计模式,比如今天我们要了解到的生产者-消费者模式。在我们日常升生活中,常常会见到这样一种场景,比如我们取麦当劳买东西,当我们点完之后,会在一旁等待...原创 2019-06-10 17:42:32 · 331 阅读 · 0 评论 -
Java学习——线程同步问题
Java学习——线程同步问题多线程在共同操作一个变量的时候可能会产生问题,这个我们在之前的多个线程卖票案例中也给大家提到过,那么我们今天就来解决一下这个问题。会用到一个关键字synchronized,如下:/** * 多个线程买票:安全 */public class UnsafeBuyTicket implements Runnable { //定义总票数 private...原创 2019-06-05 20:36:04 · 126 阅读 · 0 评论 -
Java学习——线程的礼让、加入、优先级、守护线程
Java学习——线程的礼让、加入、优先级、守护线程线程的礼让:让出cpu的时间片,但是礼让是否成功还是要看cpu的心情。线程礼让在Java中用到了一个yeild()方法,我们在这里举一个例子,小明和老人一起过马路,小明礼让老人。所以结果是老人先结束小明才开始的纪律会比较大,但也不是说一定是老人小走,如下:public class ThreadYield{ public static v...原创 2019-06-05 20:21:26 · 728 阅读 · 0 评论 -
Java学习——JDK1.8新特性lambda表达式
Java学习——JDK1.8新特性lambda表达式今天我们来学习一下JDK1.8的一个新特性——lambda表达式,lambda表达式的产生其实是为了简化代码的,我们来看下lambda的推导过程:外部类—>静态内部类—>局部内部类—>匿名内部类—>lambda1.外部类:最开始我们使用外部类//外部接口(函数式接口);函数式接口的意思式,接口中只有一个方法int...原创 2019-06-05 19:47:04 · 304 阅读 · 0 评论 -
Java学习——多线程之静态代理模式
Java学习——多线程之静态代理模式我们在学习Java时知道23种设计模式是前人总结出来的比较好的模式,以供后人使用,那么23种设计模式到底是哪23种呢?主要分为3大类,如下:1.创建型模式(共五种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。2.结构型模式(共七种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。3.行为型模式(共十一种):策...原创 2019-06-05 13:59:02 · 403 阅读 · 0 评论 -
Java学习——多线程经典案例之龟兔赛跑
Java学习——多线程经典案例之龟兔赛跑我们在学习了多线程之后,来看一个案例深入了解多线程,体会一下多线程。代码如下:/** * 多线程经典案例:模拟龟兔赛跑 */public class ThreadRace implements Runnable{ //定义胜利者 private String winner; @Override public vo...原创 2019-06-04 21:21:12 · 1287 阅读 · 0 评论 -
Java学习——多线程学习之多个线程买票(线程不安全案例)
Java学习——多线程学习之多个线程买票(线程不安全案例)我们都知道多线程效率高,在我们学习集合的时候就知道,ArrayList线程不安全,效率高。那么线程不安全到底是怎么样的回事呢。我们来看看这个案例:/** * 经典案例,多个线程卖票:用来展示多线程不安全问题 */public class ThreadSellTickets implements Runnable{ //定义...原创 2019-06-04 20:25:50 · 743 阅读 · 0 评论 -
Java学习——多线程下载文件案例
Java学习——多线程下载多线程实现同步下载,这里以下载图片为例:/** * 多线程下载文件 */public class ThreadDownLoad implements Runnable{ private String url; private String file; public ThreadDownLoad(String url, String fi...原创 2019-06-04 19:47:08 · 289 阅读 · 0 评论 -
Java学习——Java动态性之反射机制(reflection)
Java学习——Java动态性之反射机制(reflection)动态性:动态语言:程序在运行时,可以改变程序结构或者变量类型。典型的动态语言:Python、ruby、JavaScript等。C、C++、Java不是动态语言,但是Java可以称之为准动态语言。但是Java有一定的动态性、我们可以利用反射机制、字节码操作获得类似于动态语言的特性。这样就使得Java更加灵活反射机制:指的...原创 2019-06-14 19:58:00 · 163 阅读 · 0 评论 -
JDBC学习——简单学习JDBC
JDBC学习——简单学习JDBC1.初始JDBCJDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。简单点来说,JDBC就是Java用来操作数据库...原创 2019-07-12 18:29:45 · 168 阅读 · 0 评论 -
第七篇:Java——三种创建线程Thread的方法
第七篇:Java——三种创建线程Thread的方法---------------------------------------------------------------------------------------------------------原创 2019-01-22 17:25:52 · 169 阅读 · 0 评论 -
第六篇:Java——使用IO流和Vecor集合合并多个文件
第六篇:Java——使用IO流和Vecor集合合并多个文件--------------------------------------------------------------------------------------------例1:这里以三个文件为例,将文件a.txt\b.txt\c.txt合并成一个文件d.txt写代码时候会出现异常,为了方便我们直接抛出给主方法,异常处理的...原创 2019-01-20 13:03:48 · 310 阅读 · 0 评论 -
第五篇:Java——利用IO流和Vector集合实现文件的拆分与合并
第五篇:Java——利用IO流和Vector集合实现文件的拆分合并----------------------------------------------------------------------------------------------------------今天我们来给大家演示一下如何使用IO流和Vector集合去实现一个文件的拆分和合并,这里我们使用音频文件来演示首先,...原创 2019-01-19 21:31:05 · 728 阅读 · 0 评论 -
第四篇:Java——利用IO流复制文件
第四篇:Java——利用IO流复制文件利用IO流复制文件之前,我们首先要知道IO流分为字符型和字节型字符型只能输出/输入文本文件,字节流可以操作什么类型文件今天我们就用字节流来复制文件---------------------------------------------------------------------------------------------------例1:复...原创 2019-01-18 22:52:53 · 314 阅读 · 2 评论 -
第三篇:Java——LinkHashSet
第三篇:Java——LinkHashSet--------------------------------------------------------------------------------------------当我们想要向集合中存储一组数据,但是需要与存入的顺序保持一致时,我们可以使用——LinkHashSet如下:public class Test2 { publ...原创 2019-01-17 17:05:30 · 560 阅读 · 0 评论 -
第二篇:Java——使用递归删除集合中重复元素
使用递归删除集合中重复元素-------------------------------------------------------------------------------------------方法一:采用老式for循环public class Test2 { public static void main(String[] args) { /创建集合 ...原创 2019-01-17 16:48:20 · 6545 阅读 · 17 评论 -
JDBC学习——PreparedStatement与Statement的区别
JDBC学习——PreparedStatement与Statement原创 2019-07-19 20:29:49 · 181 阅读 · 0 评论 -
第一篇:Java——HashSet 的简单了解与使用
Set的特点:不包含重复元素HashSet如何保证元素唯一性的:通过重写hashcode();与equals();方法HashSet底层数据结构:哈希表,数组+链表(JDK1.8之后引入红黑树,即底层数据结构为数组+链表+红黑树:当链长达到8之后,转为红黑树存储)例1:创建一个HashSet存入数据并遍历集合: public static void main(String[] arg...原创 2019-01-17 15:03:34 · 248 阅读 · 0 评论 -
Java学习——多线程(Thread)学习之线程的三种创建方式
Java学习——线程的三种创建方式今天我们来学习多线程,首先我们要知道什么是线程? 线程与进程又有什么区别?1.线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程在运行时,是有多个线程一起运作的。2.进程是静态的,线程是动态的。那么我们为什么要学习多线程呢?我们知道在我们代码的运行时,是逐行运行的,这样的方式效率很低,如果我们将互不干扰的两段...原创 2019-06-03 19:37:59 · 168 阅读 · 0 评论 -
Java学习——使用GUI与网络编程实现客户端给服务器发送消息(附源码)
Java学习——使用GUI实现客户端给服务器发送消息(附带登陆、注册)效果展示:1.服务器界面:2.登陆界面:3.注册界面:4.客户端界面:原创 2019-05-31 15:26:38 · 1286 阅读 · 0 评论 -
Java学习——常用类的学习之String类
Java学习——常用类的学习之String、StringBuffer1.String类字符串:-String类是对字符串进行操作的一个类,那么我们先简单来了解一下什么是字符串,字符串是由多个字符组成的字符序列,字符串可以看成字符数组。String的概述:String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是常量;它们的值在创建...原创 2019-05-05 20:49:31 · 167 阅读 · 0 评论 -
Java学习——常用类的学习之Scanner
Java学习——常用类的学习之ScannerScanner是一个常见的键盘录入的一个类。1.Scanner的构造方法原理Scanner有这么一个构造:Scanner(InputStream source)官方文档给出的解释是: 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。反正说了这么多它也就是用来做键盘录入的。再来看,System类下有一个静态的字段:public...原创 2019-04-28 11:20:48 · 239 阅读 · 0 评论 -
Java学习——常用类的学习之Object
Java学习——常用类的学习之Object我们都知道object类是我们所有类的顶层父类,那么今天我们就来学习一下objec类中的四个常用的方法- public final Class getClass()- public int hashCode()- public String toString()- public boolean equals(Object obj)1.getCl...原创 2019-04-23 21:27:16 · 158 阅读 · 0 评论 -
Java学习——面向对象之抽象类与接口
Java学习——面向对象之抽象类与接口1.抽象类抽象类的概述:在Java中,一个方法如果没有方法体,即没有具体的实现,则称该方法为抽象方法。如果一个类中存在抽象方法,那么这个类就是抽象类。抽象类的特点:1.抽象类和抽象方法必须用abstract关键字修饰2.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类/* 抽象类 */public abstract class Tes...原创 2019-04-17 21:23:00 · 146 阅读 · 0 评论 -
Java学习——面向对象之多态
Java学习——面向对象之多态多态的概念:多态指的是某一个事物,在不同时刻表现出来的不同状态。在面向对象语言当中,其表现的是接口的不同实现方式。也就是说允许父类的引用指向子类。举个例子:Dog dog = new Dog();Animal an = new Dog();我们设计一个Dog类,将其对象new出来,用它本身的引用去指向。当然我们也可以用其父类Animal去指...原创 2019-04-17 20:12:57 · 94 阅读 · 0 评论 -
Java学习——面向对象之继承
Java学习——面向对象之继承概述:当多个类存在相同的属性和方法时,我们可以将这些相同的属性和方法抽取成为一个父类,其他类去继承这个父类即可。继承体现的是一种“is a”的关系关键字:extendsJava中继承的特点:1.只能单继承,不能多继承。意思是说一个类只能继承一个类,不能同时继承多个类。这也符合现实生活中只能有一个父亲的特征2.可以多级继承,意思是子类可以继承父类,父类可以继承...原创 2019-04-15 20:55:17 · 140 阅读 · 0 评论 -
Java学习——面向对象(代码块的概述、分类、执行顺序)
Java学习——面向对象(代码块的概述、分类、执行顺序)概念:在java中用{}括起来的代码被称为代码块分类:1.局部代码块:在方法中,随着方法的调用而产生,随着方法释放而消失2.构造代码块:在类中的方法外,每次调用都会执行,在构造方法前执行3.静态代码块:用static修饰的代码块,在类中的方法外,在类加载时执行,只执行一次4.同步代码块(多线程讲解,现不做讲解)下面我们来看一下一个...原创 2019-04-15 20:19:25 · 237 阅读 · 0 评论 -
Java学习——不死神兔之斐波那契数列(递归思想)
java学习——利用递归完成不死神兔问题需求:兔子问题(斐波那契数列)。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?由此可见兔子对象的数据是:1 , 1 , 2 , 3 , 5 , 8 …首先我们对其数据进行分析,可知从第三天开始,每天的兔子数量等于前两天之和,其次我们要知道递归的思想:递归:在方法中...原创 2019-04-10 10:20:54 · 345 阅读 · 0 评论 -
Java学习——常用类的学习之String,StringBuilder,StringBuffer三者的区别
Java学习——常用类的学习之String,StringBuilder,StringBuffer三者的区别最近,在学习字符串常用类时,学习到了String,StringBuilder,StringBuffer三个常用类,在这里整理一下这三者的区别,这三者的区别主要还是在于运行速度和线程安全。1.运行速度方面:StringBuilder > StringBuffer > String...原创 2019-05-05 21:25:34 · 121 阅读 · 0 评论 -
Java学习——排序算法之冒泡排序
Java学习——排序算法之冒泡排序排序算法有很多,我们今天来学习其中的一种,冒泡排序那么,什么是冒泡排序呢?百度百科是中这样解释的:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也...原创 2019-05-06 15:26:57 · 193 阅读 · 0 评论 -
Java学习——网络编程之TCP
Java学习——网络编程之TCPTCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 [1] 另一个重要的传输协议。TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发...原创 2019-05-31 14:56:40 · 135 阅读 · 0 评论 -
Java学习——网络编程之UDP
Java学习——网络编程之UDPUDP (User Datagram Protocol), 中文名是用户数据报协议,是OSI(Open SystemInterconnection,开放式系统互联) 参考模型中一种无连接的传输层协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。所以UDP效率高,不安全。下面...原创 2019-05-31 14:51:21 · 129 阅读 · 0 评论 -
Java学习——commons-io组件的环境搭建与简单使用
Java——commons-io组件的环境搭建与简单使用一、commons-io组件的环境搭建commons-io组件是apache里面的一个组件,组件的也就是jar包的集合。使用来简化我们io操作的。说起apache,不得不去夸一下这个组织,我们在以后的学习中很多开源的框架都来源于apache,这个组织是不盈利的,有很多大公司,比如阿里里巴巴,会将一些开源的代码交给apache发布。这些...原创 2019-05-30 13:00:26 · 1621 阅读 · 0 评论 -
Java学习——Collection集合
Java学习——Collection集合今天我们来学习Collection集合,学习这个集合之前我们先要知道为什么要引入集合。我们都直到Java语言是一种面向对象的语言,所以为了存取对象方便,就引入了集合的概念。那么集合和数组到底又有什么区别呢?长度区别:数组的长度一旦定义就不可变的;但是集合的长度是可变的,是可以自动扩容的存储的数据类型区别:我们知道数组是可以存储基本数据类型也可以存储...原创 2019-05-21 17:29:59 · 397 阅读 · 0 评论 -
Java学习——排序算法之快速排序
Java学习——排序算法之快速排序什么是快速排序?快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序原理快速排序的原理其实就是挖坑填数,步骤为:...原创 2019-05-09 19:38:07 · 143 阅读 · 0 评论 -
Java学习——排序算法之希尔排序(Shell排序)
Java学习——排序算法之希尔排序(Shell排序)什么是希尔排序?希尔排序,又称缩小增量排序。其原理是:先确定一个增量ht(或称步长、间隔),然后将原序列按照增量分组,每个组按照直接插入法排序。接着,将增量ht/2,再按照这个增量分组,再进行直接插入排序,以此类推,直到增量ht为1时,整个序列就已经排序好了。希尔排序的关键:希尔排序的关键是:增量ht的选择,选择一个合适的...原创 2019-05-07 20:25:16 · 126 阅读 · 0 评论 -
Java学习——排序算法之直接插入排序
Java学习——排序算法之直接插入排序什么是直接插入排序?直接插入排序的基本原理是:每一步将一个待排序的元素,按照其大小,插入到已经排号序的一组元素当中适当的位置。请看下面原理的解析:代码实现1(for循环+while循环):import java.util.Arrays;public class Test3 { /** * 直接插入排序...原创 2019-05-06 18:09:29 · 193 阅读 · 0 评论 -
Java学习——排序算法之选择排序
Java学习——排序算法之选择排序选择排序,我认为是排序中最好理解的一种算法了。那么什么是选择排序?选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是...原创 2019-05-06 16:23:46 · 136 阅读 · 0 评论 -
第八篇:Java——多线程之经典案例—多个窗口卖票
第八篇:Java——多线程之经典案例:多个窗口卖票--------------------------------------------------------------------------------------------在我们学习了多线程的创建之后,我们来用多线程实现多个窗口卖票的案例例1:编写程序,完成多个窗口共卖100张票的程序,并测试。public class Test...原创 2019-01-22 19:23:57 · 1953 阅读 · 0 评论