java
朝去夜来
这个作者很懒,什么都没留下…
展开
-
枚举
要使用枚举,在新建文件时,就要把他设定为enum,且枚举里面的个数不要太多,十个左右就挺好的,三十个就太多了设定枚举及构造器:public enum Color { /** * 枚举最好不要太多,超过30个就太多了 * 调用枚举等同于调用它的无参构造 */ RED("这是红色"),GREEN("这是绿色"),BLUE("这是蓝色"),YELLOW("这是黄色"); private String msg; Color(String m原创 2021-05-26 11:22:17 · 97 阅读 · 0 评论 -
简单用代码了解服务端和客户端
1、QQ.java (客户端)public class QQ { public static void main(String[] args) throws Exception{ // 客户端不需要固定端口,服务端不会主动来连客户端 Socket socket = new Socket(); // 连接服务端 socket.connect(new InetSocketAddress("localhost",8888));原创 2021-05-26 11:10:15 · 188 阅读 · 0 评论 -
用IO流写个用户名和密码存储的小项目
1、Constant.java确定文件存储的位置及文件名public class Constant { public static final String BASA_PATH = "D://"; public static final String USER_FILE_NAME = "user.txt";}2、User.java初始化用户名和密码public class User { private String username; privat原创 2021-05-26 11:07:46 · 286 阅读 · 0 评论 -
用IO流拷贝文件,读和写,序列化和反序列化
我们会展示两种IO流拷贝文件的方式,一种是简单且标准的,需要能背下的,一种是升级版,可以在拷贝文件的时候显示拷贝的进度条,从百分之一到百分之百。简单且标准的:实际代码不多,大部分都是try catch/** * 拷贝文件 * 把一个文件拷贝到另一个地方 */ @Test public void copyFiel(){ // 定义文件输入、输出的变量 InputStream inputStream = null;原创 2021-05-21 22:26:25 · 203 阅读 · 0 评论 -
异常的分类及解决
异常主要分为三类:检查性异常、运行时异常、error三个类型的区别在代码的注释中有检查性异常通常使用try catch解决,运行时异常通常使用RuntimeException解决接下来的代码主要展示检查性的异常怎么解决/** * @author * @data 2021/5/20 * 要去坐飞机,从家里出发 * 堵车了,提早处理,早点走 检查性异常 * 到了机场发现带护照身份证 运行时异常(走的时候检查啥没带就行) * 飞机飞行中坠毁 error * * ..原创 2021-05-20 23:03:29 · 3110 阅读 · 0 评论 -
初步理解线程
一个应用程序我们称为一个进程,一个进程里面可以包含很多线程1、MyRun.javapublic class MyRun implements Runnable{ @Override public void run() { while (true){ try { Thread.sleep(1000); } catch (InterruptedException e) {原创 2021-05-19 22:28:30 · 99 阅读 · 0 评论 -
怎么计算每个单词出现的次数
public class Test1 { public static void main(String[] args) { String content = "hello world hello World aa bb cc dd ee ff ee aaa fff ww xx yyy DD"; // 1、先全部变成小写 content = content.toLowerCase(); // 2、字符串搞成数组,split是分割的意.原创 2021-05-18 23:31:58 · 363 阅读 · 0 评论 -
把两个数组的内容融合到一起,归并
本节内容是归并,将两个数组融合到一起,并且是排序好的。用普通for循环也能达到数组融合的效果,但是效率太差,容易被企业pass掉,所以就不介绍了public class Test { /** * 本节内容是归并,将两个数组融合到一起,并且是排序好的。 * 用普通for循环也能达到数组融合的效果,但是效率太差,容易被企业pass掉,所以就不介绍了 * @param args */ public static void main(String[.原创 2021-05-18 23:30:26 · 581 阅读 · 0 评论 -
饿汉式单例和懒汉式单例,超级简单型
单例是面试题中经常考的,需要手写出来,只是下列的太简单了,面试会不及格的饿汉式单例,一开始就new一个新的Calendar(),这个类是自己写的,不是java自带的日历类,不要混为一谈了public class Calendar { private final static Calendar CALENDAR = new Calendar(); private Calendar(){ } public static Calendar getInstance(){原创 2021-05-17 23:22:25 · 65 阅读 · 0 评论 -
String、Arrays、Math、Date、Calendar的常用方法
String的常用方法就直接粘代码了,不想写解释了public class StringTest { @Test public void test1(){ String str = "abc"; byte[] bytes = str.getBytes(); // 输出结果为a System.out.println(str.charAt(0)); // 输出结果为abcddd Syste原创 2021-05-17 23:17:13 · 61 阅读 · 0 评论 -
冒泡查找很差劲,其他方法的查找更快捷
冒泡排序的速度很慢,运行效率差,我们有更好的排序方式,我将会在下面贴上代码。除了冒泡排序还有其他两种更好更快的排序方式:list.sort(Comparator.comparingInt(a -> a));list = list.parallelStream().sorted(Comparator.comparingInt(a -> a)).collect(Collectors.toList());首先我们来回忆一下冒泡排序的写法: // 冒泡排序原创 2021-05-17 22:53:13 · 157 阅读 · 0 评论 -
二分查找、折半查找,两种写法
注:折半查找只能运用于已排好序的数组,对于没有进行大小排序的数组无效public class BinarySearch { public static void main(String[] args) { int[] nums = {1,2,3,34,56,245,643,765,4453}; int i = binarySearch2(nums,643); System.out.println(i); } /**原创 2021-05-17 22:34:21 · 76 阅读 · 0 评论 -
ArrayList、HashMap、HashSet迭代器
ArrayList使用迭代器首先,我们有个list类 List<User> list1 = new LinkedList(); list1.add(new User("张三","123")); list1.add(new User("李四","123")); list1.add(new User("王五","123")); list1.add(new User("翠花","123")); l原创 2021-05-10 23:39:08 · 233 阅读 · 0 评论 -
HashSet —— 简单例子
SetMap是无序的,不能存重复值,和hashMap本质上是一样的存储方式,出现重复内容会被覆盖掉。但是添加方式和list很像,都是add一个个添加,直接添加数值,没有键值对。遍历的时候需要用到增强for循环,普通for循环没有get()Set是HashSet的父类,所以这两个用哪个都行public class SetTest { @Test public void test1(){ // set是无序的,不能存重复值,和hashMap本质上是一样的...原创 2021-05-10 22:16:52 · 629 阅读 · 0 评论 -
集合 简单HashMap例子
hash是无序的,不能排序,如果想要map能排序,就要使用TreeHash,它会根据键的字母顺序自动排序HashMap就像一个数组,里面有16个位置可以存放数据,每个位置下面可以通过链表的方式存在各种数据HashMap是键值对,通过键找到值,将键进行hashcode后,对hashcode后的值的进行%16,也就是0-15,然后找到键所在的数组位置,定位到键如果在那个数组中后两个相同的键,前面的键会被后面的覆盖1、写个User类,写个username和password变量,并对...原创 2021-05-09 23:28:43 · 162 阅读 · 0 评论 -
单元测试——ArrayList
首先我们要在IDEA的java文件中调用@Test,就要先在https://search.maven.org/中下载junit-4.13.2和hamcrest-2.2,然后将这连个jar包添加到所需文件的Libraries中。然后,在外部库下面我们可以看见下图,这样我们就添加成功了。然后我们写个TestList进行测试,我们new一个数组list,添加数字,进行遍历public class TestList { @Test public void testArrayLi原创 2021-05-09 22:42:14 · 546 阅读 · 0 评论 -
用队列写一个银行取票机的小功能
1、对列类public class Queue<T> { /** * 维护一个超级数组 */ SuperArray<T> superArray = new SuperArray<>(); /** * 入(压)栈的方法 */ public void put(T data){ superArray.add(data); } /** * 弹栈的方法原创 2021-05-08 00:03:43 · 51 阅读 · 0 评论 -
用java代码表示压栈和队列的区别
压栈是数据第一个进入,最后一个出来,简称FILO,first in lastout队列是数据第一个进入,第一个出来,简称FIFO,first in firstout1、压栈public class Stack<T> { /** * 维护一个超级数组 */ SuperArray<T> superArray = new SuperArray<>(); /** * 入(压)栈的方法 */ ...原创 2021-05-08 00:01:54 · 87 阅读 · 0 评论 -
泛型的使用
本次泛型的使用是在之前超级数组和链表的基础上写的,这是之前数组和链表的链接https://blog.csdn.net/wenqi1/article/details/116505175个人根据学习的例子所理解的泛型为:相当于把多态中用到的方法抽离出来,单独放在一个类中进行调用老师说以后用到的少,所以只要了解一下就行吧1、接口类Super/** * * @param <T> * 表示泛型,以后要往这个类里面传User,就都会传到T里面 */public i原创 2021-05-07 23:54:26 · 65 阅读 · 0 评论 -
数组和链表的增删查改
数组1、对数组初始化2、设置数组长度3、对数组进行排序4、给数组增加元素5、删除元素6、输出元素// 包装超级数据public class SuperArray { private int[] arr; private int currentIndex = -1; public SuperArray(int size){ // 初始化,不初始化不能用 arr = new int[size]; } p原创 2021-05-07 23:37:00 · 232 阅读 · 0 评论 -
匿名内部类
只需要用一次内部类时可用匿名内部类1、新建个Girl接口类,里面只有一个方法,就是meetpublic interface Girl{ void meet{ }}2、现在有个Boy类想要调用Girl,Boy类里面有个merry方法,输入我们结婚了3、在测试类里面写道:Boy boy = new Boy();boy.merry( new Girl(){ @Override public void meet(){ system.o原创 2021-04-29 00:00:56 · 85 阅读 · 0 评论 -
用多态来体会超级集合
本例子是在之前超级数组的基础上写的1、新建接口类,确定每个子类所要继承的东西package com.xinzhi;public interface Super { /** * 添加数据 * @param data */ void add(Integer data); // 删除数据 void delete(int index); // 获取新的头 Integer get(int index); //原创 2021-04-27 23:17:39 · 150 阅读 · 0 评论 -
初入多态,abstract抽象类,interface接口
/** * 多态有三个关键点: * 1、要有继承 * 2、要有重写 * 3、要有父类引用指向子类对象 * 一种事物有多个状态 */现有父类Father,子类Son、Daughter // 这就是最简单多态 Father f = new Son(); f.smoke(); Father f1 = new Daughter(); f1.smoke(); f1.fight(f);f、f1都是子类,子类都.原创 2021-04-22 23:08:19 · 44 阅读 · 0 评论 -
toString和HashCode
1.user.javapackage com.xinzhi;public class User { private Integer age; private String name; @Override public String toString() { return "Test1{" + "age=" + age + ", name='" + name + '\'' +原创 2021-04-22 22:47:48 · 109 阅读 · 0 评论 -
instanceof和对象转型
1.现有父类Father,子类Son // instanceof是实例的意思 // father 属于 Father ,所以为真 System.out.println(father instanceof Father); // son 继承了父类, 属于 Father ,所以为真 System.out.println(son instanceof Father); // father 属于父类,父类不能属于子原创 2021-04-21 00:04:46 · 116 阅读 · 0 评论 -
equals的使用方法
1.Fatherpublic String getHobby() { return hobby; }public boolean compare(Father father){ if(this.getHobby().equals(father.getHobby())){ return true; }else { return false; } }2.Test原创 2021-04-20 23:28:46 · 108 阅读 · 0 评论 -
类的加载顺序
1.父类package com.xinzhi;public class Father { // 所有的类都会有一个顶级的父类,object // private仅支持本类 // protected可在父子类之间调用 // 父类的静态变量 public static String NAME = "老王"; /** * 类加载的时候就会调用 * 类加载的时机 第一次主动使用就会加载这个类,把他加载到内存 */原创 2021-04-18 23:21:02 · 148 阅读 · 0 评论 -
用Robot给指定微信好友发送Jsoup从网上爬虫得到的内容
1.Demo.class,其中for循环表示向指定好友发送几次消息package com.xinzhi;import javax.swing.*;import java.awt.*;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.event.KeyEven原创 2021-04-17 23:23:12 · 120 阅读 · 0 评论 -
子类继承父类
1.创建Fatherpackage com.xinzhi;public class Father { // 所有的类都会有一个顶级的父类,object // private仅支持本类 // protected可在父子类之间调用 private String hobby; public Father() { System.out.println("父亲被创建了"); } public void smoke(){原创 2021-04-17 23:16:11 · 5188 阅读 · 0 评论 -
构造方法,方法重载
package com.animal;public class Dog { /** * 1、new 其实是在调用构造方法 * 2、如果一个类里边没有构造方法,会自动创建一个空的构造方法 * 3、构造方法能传参数,在构造期间就把对象的值赋好 * 4、一旦有了新的有参数的构造方法,空构造就不在了,如果想保留,就得手动写上 * @param args */ public static void main(String[] args).原创 2021-04-17 23:13:23 · 349 阅读 · 0 评论 -
静态变量,构造方法,普通方法,私有方法
1.新建一个Girl.class,里面没有psvm可以运行package com.animal;public class Girl { // 静态变量 全部大写 下划线隔开多个单词 public static String BOY_FRIEND_NAME; public static int BOY_FRIEND_AGE; // 属性必须定义成private // 按住shift+F6,选择name,下面所以参数都会改变,称为setter p原创 2021-04-17 23:11:47 · 114 阅读 · 0 评论 -
值传递和方法传递
// 值传递和方法传递public class Test2 { public static void main(String[] args) { // 引用类型 引用传递 int[] nums = {1,3,5,4,2}; Test2 t = new Test2(); t.sort(nums); // 传递地址 for(int i = 0; i < nums.length; i++){ .原创 2021-04-17 23:05:12 · 48 阅读 · 0 评论 -
包装类的使用方法
// 包装类public class MyInt { public static void main(String[] args) { MyInt myInt = new MyInt(5); myInt.plusOne(); // 调用plusOne方法,得到6 String str = myInt.toStr(); // 调用toStr方法,变成字符串 System.out.println(str); int...原创 2021-04-17 23:04:09 · 165 阅读 · 0 评论 -
递归,斐波那契数列
// 斐波那契数列public class Fibonacci { public static void main(String[] args) { System.out.println(fibonacci(8)); } /** * 第一个是0,第二个是1,后面都是前两者的和 * 自己调用自己,称为递归 * @param count */ public static int fibonacci(int count).原创 2021-04-17 23:02:36 · 42 阅读 · 0 评论 -
封装例子
package com.vehicle;import com.animal.Dog;import java.util.Scanner;public class Car { public String color; public int saddle; // 车座 public void run(){ System.out.println("启动车"); System.out.println("踩油门"); } publ原创 2021-04-17 23:00:50 · 75 阅读 · 0 评论 -
英雄小游戏,Scanner,while,if,方法调用,延时
package com.itheima;import java.util.Scanner;public class HeroGame { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入英雄的名字:"); String hreoName = scanner.next(); // 默.原创 2021-04-10 20:19:55 · 53 阅读 · 0 评论 -
debug的使用方法
package com.itheima;public class MaxPlug { public static void main(String[] args) { // 1、打断点 int[] arr = {1,2,3,4,5}; System.out.println(123); // 点击这一行,右边会出现小红点,选择debug运行,可以用于一段一段查看代码是否有误 for ( int i =0; i < arr.le.原创 2021-04-10 20:18:07 · 510 阅读 · 0 评论 -
欣知人事年龄管理系统,用到for,switch,while,boolean
无方法调用的人事系统package com.itheima;import java.util.Scanner;/** * 欣知人事年龄管理系统 * author: */public class XinzhiHr { public static void main(String[] args) { // 创建一个数组存放员工的年龄 int[] users = new int[3]; Scanner scanner = new Scann原创 2021-04-10 20:16:41 · 113 阅读 · 0 评论 -
求最大值,最小值,数组下标,选择排序,冒泡排序,插入排序
package com.itheima;public class max { public static void main(String[] args) { int[] nums = {1,19,20,3,6,9,30}; // 输出最大值 int max = nums[0]; for (int i = 0;i < nums.length;i++){ if(nums[i] > max){ .原创 2021-04-10 20:11:26 · 160 阅读 · 0 评论 -
数组求和,数组倒装
package com.itheima;public class sum { // 若要修改文件名,选中文件名,按住shift+F6,修改 public static void main(String[] args) { int[] array = {1,2,3,8,6,21,12,33,71,77,171}; // 求和,个位不能为7,十位不能为7,必须是偶数 int sum = 0; for (int i = 0; i &l.原创 2021-04-10 20:08:22 · 131 阅读 · 0 评论