![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
菜鸡的程序猿
这个作者很懒,什么都没留下…
展开
-
利用枚举实现单例模式
枚举(enum)它可以有属性,私有的构造方法,普通方法,而且只会初始化一次,因为他是在静态代码块中实现的初始化。他完全可以实现单例模式。因为枚举类型就是该对象。SingleTon:public enum SingleTon { // SingTon对象 SINGLE_TON; // 私有属性 private String name; //公有属性 public int age; // 方法 public String getName()原创 2020-09-12 23:16:34 · 864 阅读 · 0 评论 -
Java 利用Dbutils工具类,实现事务
数据库信息entityBank实体类:public class Bank { private String bankNum; private BigDecimal money; private String bankName; private String address; public Bank() { } public Bank(String bankNum, BigDecimal money, String bankName, Str原创 2020-08-25 20:33:45 · 419 阅读 · 0 评论 -
Java 与数据库交互,如何实现事务
比如有个银行,当我进行转账的时候,却突然停电了,我的卡显示扣钱,但是转账的卡却没有增加相应的钱,这就需要实现事务了。连接数据库的工具类:utils:package com.qf2002.utils;import java.io.IOException;import java.io.InputStream;import java.sql.*;import java.util.Properties;/** * 2020/8/20 * 16:31 * 注册驱动 * 获取连接 * 增删原创 2020-08-21 19:40:03 · 542 阅读 · 0 评论 -
Java 基础学习 day19 JVM&&GC
JVM概述虚拟机:模拟某种计算机体系结构,执行特定指令集的软件。两大类:1.系统虚拟机(Virtual Box,VMware):运行系统的2.程序虚拟机(JVM,.NET CLR(C#),P-Code):运行程序的。Java虚拟机架构HotSpot虚拟机运行较高的代码直接编译成二进制,存储在内存中,提高效率。我们的java就是用的HotSpot类加载Java类加载器(Java Classloader)是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。原创 2020-08-17 19:20:36 · 110 阅读 · 0 评论 -
Java基础学习 day_18 Java8新特性
Java8概述Lambda表达式//匿名内部类Runnable runnable=new Runnable() { @Override public void run() { System.out.println("执行run方法..."); }};//Lambda优化匿名内部类Runnable runnable1= ()->{ System.out.println("执行run方法...");};//Lambda表达式中只有一条语句原创 2020-08-14 10:40:33 · 143 阅读 · 0 评论 -
Java基础学习day_17 反射
反射(reflect)把类当成对象来看反射的相关类获取类的类对象(三种方式)//1通过对象获取类对象Student student =new Student("学子",18,"男");Class<? extends Student> aClass = student.getClass();System.out.println("类对象的hashCode:"+aClass.hashCode());//2通过类获取类对象,类.classClass<Student>原创 2020-08-12 21:50:36 · 193 阅读 · 0 评论 -
java 设计基础 利用反射实现插件开发
首先设计一个接口比如:这是一个汽车服务接口,有前进和转弯的功能package qf.test.test03;public interface CarService { //前进 void run(); //转弯 void turn(String direction);}实现这个接口,比如:一个奥托类package qf.test.test02;import qf.test.test03.CarService;/** * 2020/8/12 * 12原创 2020-08-12 19:51:41 · 212 阅读 · 0 评论 -
Java基础学习 day_16 NIO
NIOBIO:阻塞IONIO:非阻塞IOAIO;异步IOBuffer缓冲区Buffer和他的七个子类都是抽象类Buffer的基本使用System.out.println(“读取的位置”);System.out.println(“position:”+buffer.position()+“limit:”+buffer.limit()+“capacity:”+buffer.capacity());System.out.println(“读取的位置”);System.out.println(原创 2020-08-11 21:15:33 · 111 阅读 · 0 评论 -
Java NIO 实现聊天
服务端package qf.test.test07;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocketChannel;import java.nio.原创 2020-08-11 20:20:32 · 154 阅读 · 0 评论 -
Java基础学习 day_15 网络编程
网络编程分为局域网,城域网,广域网OSI(Open System interconnection) 开放式系统互联Tcp/Ip模型三次握手四次挥手TCP/UDP端口号TCP端口号:0~65535UDP端口号:0~65535一个端口号只能被一个程序使用。一个程序可以占用多个端口号。常用端口号MySql3306Oracle1521Tomcat8080SMTP25Web服务器80FTP服务器21Web安全服务器443原创 2020-08-10 20:52:51 · 137 阅读 · 0 评论 -
Java 克隆 Cloneable接口
深克隆:一个类中还有个类对象,如果要对这个类对象也创建一个新的空间,就要进行深克隆。两个类都要实现Cloneable接口,重写clone方法。但是对于Person类clone()方法需要修改。Person类:public class Person implements Cloneable{ private String name; private int age; private Address address; public Person(String name, i原创 2020-08-07 19:45:04 · 198 阅读 · 0 评论 -
Java基础学习 day_14 File类
File类//构造方法File file=new File("");File file=new File("","")创建文件 //创建文件 File file=new File("d:\\Test01\\aaa.txt"); File file1=new File("D:\\Test01","qq.txt"); if(!file1.exists()){ boolean b=file1.createNewFile();原创 2020-08-07 17:54:38 · 520 阅读 · 1 评论 -
Java基础学习day_13 集合的线程安全
copyOnWriteArrayList1.线程安全的ArrayList,加强版读写分离2. 使用方式与ArrayList无异3. 写入时,先copy一个容器副本、再添加新元素,最后替换引用4. 写有锁,读无锁,读写之间不阻塞,优于读写锁CopyOnWriteArrayList<String> copy=new CopyOnWriteArrayList<>();copy.add("e");//写操作public boolean add(E e) { final原创 2020-08-06 14:52:19 · 202 阅读 · 0 评论 -
Java 重要思想 让不安全的集合变得安全
Collections工具类collections不仅提供了关于集合的各种操作,也提供了多个可以获得线程安全集合的方法。• public static Collection synchronizedCollection(Collection c)• public static List synchronizedList(List list)• public static Set synchronizedSet(Set s)• public static原创 2020-08-04 20:33:39 · 279 阅读 · 0 评论 -
Java 重写Object类中的方法会带来的问题
Object类主要方法有:1.getClass();返回此对象的运行时类。2.hashCode();返回对象的哈希码值3.toString();返回对象的字符串表示形式4.equalis();判断对象是否相等5.wait();使当前线程处于等待状态,直到等到另一个线程调用notify()或者notifyAll();6.notify();唤醒正在等待的单个线程。7.notifyAll();唤醒正在等待的所有线程。8.finalize();垃圾回收会调用此方法。创建一个Student类,不重写原创 2020-08-04 19:00:58 · 354 阅读 · 0 评论 -
Java 基础学习 day_11 12线程
线程1.继承 Thread重写run()方法,声明对象,调用start()方法。2.实现Runnable接口(优先选择)重写run()方法,声明对象,Thread thread=new Thread(对象);在调用start()方法。方法1.Thread.sleep(毫秒),让当前线程休眠xx毫秒。需要处理异常。(有限等待)2.Thread.yield();让当前线程放弃时间片,回到就绪状态,继续抢夺时间片。3.对象.join(); 让当前线程加入到当前执行的线程,并优先执行。(无限等待)原创 2020-08-04 17:42:57 · 307 阅读 · 1 评论 -
Java基础学习 day_10 Set集合
Set无序 无下标 不可重复hashSet存储结构:哈希表判断重复的依据:hashCode和equals方法。存储过程:(1)根据hashCode计算存储的位置,如果此位置没有元素,则添加。(2)如果此位置有元素,再比较equals(),如果equals()相同,则拒绝添加。所以说要重写hashCode()和equals();hashtable:(本质数组+链表)JDK1.7(数组+链表)JDK1.8(数组+链表+红黑树)system.identityHashCode();得到原始的原创 2020-08-03 18:55:02 · 365 阅读 · 0 评论 -
Java 面试题 异常return
public static void main(String[] args) { int result=m1(); System.out.println(result);}public static int m1(){ int a=10; try{ a=20; throw new RuntimeException(); }catch(Exception e){ a=30; return a;原创 2020-08-01 18:16:28 · 263 阅读 · 1 评论 -
Java基础学习 day_09 集合
集合迭代器: **next()**的方法:返回列表中的下一个元素,并且前进光标位置。数组和集合的区别:数组的长度是固定的,集合长度不固定数组存储基本类型和引用类型,集合只能存储引用类型。位置:java.util.*;Collection集合删除remove():如果集合里有重复的对象,只能删除第一个匹配的。遍历集合://第一种遍历增强For循环for (Object o : collection) { System.out.println(o);}//第二种遍历 迭代器遍原创 2020-08-01 09:27:51 · 181 阅读 · 0 评论 -
Java基础学习 day_8 异常
异常Throwable:翻译过来是可抛出的,它是一切错误或者异常的父类。根据api就可以看出,位于java.lang包下。它的两个子类1.Error:JVM,硬件,执行逻辑错误,不能手动处理。2.Exception:程序在运行和配置中产生的问题。可以处理。它又分为:1**.RuntimeException**:运行时异常,可处理也可以不处理2.CheckedException:检查时异常,必须处理。常见的运行时的异常产生异常结果:相当于遇到 return语句,导致程序因异常而终止。异常的传原创 2020-07-31 08:43:39 · 178 阅读 · 0 评论 -
Java 面试题 异常
try{}、catch{}、finally{}中是否可以包含return语句?三个语句中都可以写return,但是一般finally中不写return,因为会造成返回结果有问题。如果try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会执行?一定会执行。public class Demo{ public static void main(String[] args) { System.out.println(getNum());原创 2020-07-30 21:57:28 · 95 阅读 · 0 评论 -
Java基础学习day_08 正则表达式 常用类
正则表达式就是一个验证字符串格式是否满足要求的字符串,使用一个字符串匹配一组字符串,这个字符串就是正则表达式。正则表达式的用途:1.匹配2.查找3.拆分4.替换BigDecimalBigDecimal num1=new BigDecimal(“1.4”);//最好写成StringBigDecimal num2=new BigDecimal(“0.5”);BigDecimal num3=new BigDecimal(“0.9”);System.out.println(num1.sub原创 2020-07-30 20:52:13 · 175 阅读 · 0 评论 -
Java基础学习 day_07
常用类内部类编译之后可生成独立的字节码文件。内部类可以直接访问外部的属性和方法。1。成员内部类:在类的内部定义,与实例方法和实例属性同级。创建内部类,必须依赖外部对象。创建方式:1.Outer out=new Outer();Outer.Inner in=out.new Inner();2.Outer.Inner in=new Outer.new Inner();成员内部类可以使用任意的访问修饰符。外部类的访问修饰符只能是public和默认。成员内部类可以直接访问外部类的方法和属性。原创 2020-07-29 18:29:10 · 228 阅读 · 0 评论 -
Java基础学习 day06-02
接口公开静态常量。公开抽象方法。没有构造方法。没有动态代码块,静态代码块。JDK1.8之后接口可以包含静态方法和默认方法。但是静态方法不能被继承。public(可以省略)default void show(){//默认方法}默认方法可以被继承。面向对象的设计原则(口诀)开口里合最单依开闭原则:开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改 原有的代码,而是要扩展原有代码,实现一个热插拔的效果接口隔离原则:每个接口中不存在子类用不到却必须实现的方法,如果不然,原创 2020-07-28 17:42:57 · 129 阅读 · 0 评论 -
Java基础学习 day_06
abstract 可以有构造方法,但不能new对象,但是可以引用。抽象类不一定有抽象方法,但是有抽象方法的一定是抽象类继承抽象类,必须实现抽象类中所有的抽象方法。原创 2020-07-28 15:14:08 · 97 阅读 · 0 评论 -
Java面试题 static 的考察
package qf.test03;/** * 2020/7/28 * 12:18 */public class TestStatic { public static void main(String[] args) { Demo.show(); }}class Demo{ private static Demo demo=new Demo(); public static int count1; public static int co原创 2020-07-28 13:13:39 · 181 阅读 · 0 评论 -
Java基础学习 day_05
返回值相同,方法名相同,参数列表相同,叫做重写/覆盖;返回值无关,方法名相同,参数列表不同(参数的个数,参数的顺序,参数的类型,但是与参数的名称无关) 叫做重载。返回值不同,方法名相同,参数列表相同,会报错。无修饰符就是default子类继承父类,如果重写方法,子类的修饰符(public/protected)一定要比父类的修饰符相等或者范围更大。private<default<protected<publicsuper最大范围只能访问到直接父类,在往上不能访问。只能通过父类去访原创 2020-07-27 16:14:24 · 138 阅读 · 0 评论 -
Java运行的顺序
Java运行的方式package internet;/** * 2020/7/26 * 17:22 *///继承Basepublic class TestExtends extends Base{ private String baseName = "sub"; public TestExtends(){ super(); } public void callName(){原创 2020-07-26 20:54:30 · 141 阅读 · 0 评论 -
Java 基础学习 day_04
面向对象对象在内存的状态。new一个对象,对象的实际数据存储在堆中,而对象的地址存储在栈中。JVM中的操作new:在堆中开辟空间,属性默认值。ivokespecial:执行构造方法。astore:把地址赋给变量。...原创 2020-07-25 11:17:49 · 926 阅读 · 0 评论 -
Java面试题 面向对象
面向对象• 需求1:编写动物类Animal • 属性:昵称、品种、颜色、年龄 • 方法: 吃 eat()、显示 show()• 需求2:封装属性,添加带参构造方法 • 年龄1-10岁• 需求3:编写动物管理类 • 属性:保存动物的数组、个数 • 方法:添加动物、查询动物、遍历动物动物类package QFTest;/** * 2020/7/24 * 17:20 */public class Animal { //昵称 private String nickName;原创 2020-07-24 19:31:12 · 200 阅读 · 0 评论 -
Java基础学习 day_03
return 不管后面有什么,直接结束方法,返回值。IDEA的使用遍历数组增强for循环。//增强for jdkint[] b={1,3,6,6,5};for (int i : b) { System.out.print(i+"--");}System.out.println();//答案1--3--6--6--5--栈:存储基本数据类型以及引用类型的地址。空间小,存储速度快,jdk1.5之前是256k,jdk1.5之后1M。先进后出。堆:存储引用数据类型的实际数据,.原创 2020-07-23 13:39:16 · 189 阅读 · 2 评论 -
JAVA基础 学习day_01
java基础day_011.如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。2. 特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。3. Scanner .next().charAt(0);//获得单个字符4. 注:如果输入了不匹配的数据,则会产生 java.util.InputMismatchException5. ASCII(American Standard Code for Information Interchan原创 2020-07-21 18:08:02 · 230 阅读 · 2 评论