JAVA下半部分学习
文章平均质量分 54
部分面向对象编程+高级编程
噢耶~
我很懒
展开
-
PreparedStatement数据库操作接口
statement问题分析 如果需要用户输入,statement将不方便执行。 利用statement执行SQL的三个问题: 不能很好的描述出日期的形式 SQL语句拼凑处理导致维护困难 无法拼接敏感字符数据 最大的问题:需要进行SQL语句的拼凑 PreparedStatement接口简介 PreparedStatement是statement的子接口 优点:数据和SQL语法可以不混合,利用占位符,当SQL正常执行完毕后可以进行数据的设置。 实现:PreparedStatement的实例需要通过Conne原创 2021-04-05 20:13:09 · 468 阅读 · 0 评论 -
Statement数据库操作接口
Statement接口简介 数据库操作需要SQL语句完成,需要有一个执行器,而执行器可以通过Statement实现。 java.sql.Statement是JDBC提供的一个数据库操作接口,可实现数据更新和查询。 接口定义:public interface Statementextends Wrapper, AutoCloseable (Statement需要进行关闭) Statement描述的是一个独立的SQL操作,每一句SQL都是独立的。 获取Statement对象需要通过Connection接口的方法原创 2021-04-05 18:58:26 · 465 阅读 · 0 评论 -
Java网络编程简介
网络程序的开发有两种模型: C/S(Client/Servver 客户端服务器端):两套程序,服务器端发生改变时,客户端也要更新处理。由开发者自定义传输协议,并且使用一些比较私密的端口,安全性比较高,开发与维护成本较高 B/S(Browse/Server 浏览器 服务器端):只开发一套服务器端的程序,利用浏览器作为客户端进行访问。开发维护成本较低。其使用的是HTTP协议,使用公共的80端口,安全性较差。现在开发以B/S开发为主。 TCP程序实现 TCP程序是网络最基本的开发模型,其核心特点是为了实现数据的交原创 2021-04-04 16:05:54 · 88 阅读 · 0 评论 -
DEBUG调试 --- IDEA
也可以点击底部栏的按钮原创 2021-03-25 20:03:03 · 110 阅读 · 0 评论 -
集合 --- Map集合
接口Map<K,V> key,value 特点: 键唯一 一个键映射一个值 按键之间的关系维护元素 HashMap<K,V> 特点: 无序, 多线程 LinkedHashMap<K,V> 继承了HashMap 特点: 哈希表和链表实现的,所以有迭代顺序 多线程 ...原创 2021-03-25 19:37:40 · 70 阅读 · 0 评论 -
集合 --- Conllections工具类
它是集合工具类 常用功能:(这些方法是静态方法,可以直接用) 使用案例: public static void main(String[] args) { ArrayList<String> li=new ArrayList<>(); Collections.addAll(li,"12","asdf","qwer","zxc"); //li.addAll("a","s","d","f","q","w","e","r");原创 2021-03-24 20:02:47 · 178 阅读 · 0 评论 -
集合 --- Set接口
特点: 元素不重复 无索引 HashSet实现类 特点: 无序列表 多线程实现 底层为哈希表(HashMap) import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetTest { public static void main(String[] args) { Set<Integer> set=new HashSet<>();原创 2021-03-24 18:00:53 · 66 阅读 · 0 评论 -
集合 --- List集合
特点: 有序集合 可索引 元素可重复 常用方法 : ArrayList集合 List集合的数组实现。 特点: 大小可变 此实现不是同步的(多线程) 常用方法: 父接口方法 LinkedList集合 它是List集合的链表实现。多线程。 常用方法: Vector List的数组实现 是同步的(单线程) 常用方法: 父接口方法 ...原创 2021-03-24 15:32:49 · 64 阅读 · 0 评论 -
范型类 --- 简单概括
Class类 继承Object类 范型使用: 类:class classname 方法:权限 返回值类型 方法名() 接口:interface name 接收范型类:Class<?> result=fun(); 例: Scanner类继承至Iterator原创 2021-03-24 11:13:45 · 169 阅读 · 0 评论 -
集合 --- Collection集合
分为两大类:单例集合,双例集合 单例集合 遍历使用iterator接口 会经常使用到iterable接口的foreach(增强for)原创 2021-03-24 09:13:15 · 55 阅读 · 0 评论 -
反射与Annotation
JDK1.5之后,Java开发提供了Annotation技术支持。 反射取得Annotation信息 进行类或方法的定义时,都可以通过Annotation进行声明,如果想要获取Annotation的信息,可以直接通过反射完成。在java.lang.reflect中AccessibleObject类提供有获取Annotation类的方法。 (AccessibleObject是Constructor,Method,Field的父类) AccessibleObject的方法: 获取全部Annotation:p原创 2021-03-23 18:54:36 · 114 阅读 · 0 评论 -
反射与代理设计模式
静态代理设计模式 代理设计模式与真是业务模式两种 传统代理设计模式的弊端 必须基于接口设计,首先定义出核心接口的组成 传统代理设计模式:消息发送的模拟发送代理设计模式 main的接口与具体的子类产生耦合,客户端需要知道各个子类。 实例开发中最好再引入工厂设计模式 之前的静态代理设计:一个代理类只为一个接口服务。 需要解决的问题:如何让一个代理类满足所有的业务接口操作要求? 动态代理设计模式 重要问题: 代理类需要接收真实业务实现子类对象 动态代理类不与具体接口进行捆绑,应该可以动态接收类的接口信息。(Obj原创 2021-03-22 20:18:59 · 78 阅读 · 0 评论 -
ClassLoader类加载器
简介 Java语言中提供有一个环境变量CLASSPATH,这个环境属性的作用主要是在JVM进程启动的时候进行类加载路径的定义 系统类加载器 要想获得类加载器,需要通过ClassLoader类来获得, 要想获得ClassLoader类对象,需要通过Class类实现。 Class类描述的是类的起源。 Class类方法: 获取ClassLoader类对象:public ClassLoader getClassLoader() ClassLoader类方法: 获取其父类的ClassLoader类对象:public原创 2021-03-21 17:09:47 · 151 阅读 · 0 评论 -
反射与简单java类
通过反射解决多个属性赋值的重复。 属性自动赋值的思路实现 建议采用字符串的形式描述对应的内容。 String可以描述很多内容,所以先采用“属性:内容|属性:内容|……” 构造一个工具类,用于属性的设置。 传入Class<?> classname,String value 返回配置好属性内容的类 单级属性赋值 所给数据类型没有了其他引用关联,只描述了classname本身的对象,这样的设计称为单级属性设计。 注:如果要用反射,类中必须含有无参构造(规范,不是规则) ...原创 2021-03-20 13:54:58 · 75 阅读 · 0 评论 -
反射与类操作
操作类(用于范例,演示效果): interface IMessage{ public String sign="Message"; public void send(); } abstract class Message{ protected String tab="IMessage"; public String info="abstract"; } class QQMessage extends Message implements IMessage{ private String msg=n原创 2021-03-17 21:34:09 · 63 阅读 · 0 评论 -
反射的应用案例
反射与工厂设计模式 之前学的是静态的工厂模式 (抽象) public static <T> T getInstance(String,Class<T>){ T; try interfacename=<T>Class.forName(String).getDeclaredConstructor().newInstance(); return interfacename; } 反射与单例设计模式 ...原创 2021-03-17 10:34:47 · 116 阅读 · 0 评论 -
反射机制
所有的技术实现目标都是:重用性 “反”与“正”的操作: 正操作是指:当要使用一个类时,先导入所在的包,然后再实例化对象,依靠对象调用类中的方法。 反操作是指:根据实例化对象推出其类型。 正操作: 1.引入包 2.实例化对象 3.调用其方法 反操作: Object类中提供的方法:获取class对象信息:public final Class<?> getClass(); 范例:观察class对象的使用 public class ClassTest { public static void m原创 2021-03-15 21:03:25 · 64 阅读 · 0 评论 -
javaIO --- 对象序列化
对象序列化基本概念 序列化的基本定义:将内存保存的数据以二进制数据流的形式进行处理,可以实现对象的保存或者网络传输。 而对象序列化一般都是计算机处理的,用户只做标记。 并不是所有对象都可以进行序列化,强制性要求:需要序列化的类需要实现java.io.Serializable接口,作为序列化标记。 Serializable接口没有方法,他描述的是类的能力。 范例:定义一个可以序列化的类 @SuppressWarnings("serial") class Person implements Serializa原创 2021-03-13 10:31:47 · 141 阅读 · 0 评论 -
javaIO --- 输入与输出支持
OutputStream类的输出功能有限。所有的数据转为字节数组后才能输出。 设计程序中可能有多种数据类型,多种流的输出,如果要对每一种情况进行设计,将会很繁琐。 打印流 范例:打印流的设计思想 package wzr.study09.io.printing; import java.io.*; public class PrintTest { public static void main(String[] args) throws Exception { File file=new File原创 2021-03-12 16:01:46 · 143 阅读 · 0 评论 -
javaIO --- IO操作深入
字符编码 常见编码: GBK/GB2312国标,GB2312只包含简体中文,GBK有简体中文和繁体中文 ISO8859-1,国际通用编码,可以描述所有字母信息,如果是象形文字需要经过编码处理。 UNCODE,十六进制存储,可以描述所有文字信息 UTF编码,象形文字采用十六进制编码,而其他文字采用ISO8859-1编码,适合用于快速传输,节约带宽。也就成为了开发首选编码。主要使用UTF-8编码 要想知道系统中支持的代码规则,则需要通过程序列出全部 属性: 列出本机属性: package wzr.study原创 2021-03-11 20:57:57 · 109 阅读 · 0 评论 -
javaIO ---字节流与字符流
流的基本概念 服务器与客户端传输的就是数据流,或者说比特流。 java.io包中的字节处理流: 输出字节流:OutputStream 输入字节流:InputStream 字符处理流: 输出字符流:Writer 输出字节流:Reader 对文件的读写流程: 通过File类找到文件路径 通过字节流或字符流对对象进行实例化 利用字节流与字符流的方法实现数据的输入输出 流操作属于资源操作,必须进行关闭处理 OutputStream字节输出流 类的声明:public abstract class Outp原创 2021-03-11 20:56:59 · 142 阅读 · 0 评论 -
javaIO --- 文件操作
java.io.File类是IO包中唯一一个与文件本身操作(创建,删除,重命名)有关的类。 并且,File类只能操作文件本身,不能操作文件内容。 File类基本操作 继承至comparable,可以进行排序操作。 可以设置访问路径,对路径的配置主要通过构造方法处理: public File(String pathname);设置操作的完整路径 public File(Fiile parent,String child)设置父路径与子目录 基本操作: 创建新的文件:public boolean crea原创 2021-03-11 20:54:50 · 105 阅读 · 1 评论 -
国际化程序实现 --- 简述
国际化程序实现原理 一个企业管理平台,最核心的功能就是它的业务流程。 p1 要解决的问题: 如何定义保存文字的文件信息。 如何通过不同区域语言的编码读取指定的资源信息。 Locale类 java.util包中提供有专门描述区域和语言编码的类。jdk1.1 两个构造方法: public Locale(String language); public Locale(String language , String country); 此时需要国家和语言的代码,中文的代码:zh_CN,美国英语的代码:en_原创 2021-03-09 16:42:21 · 215 阅读 · 0 评论 -
正则表达式
认识正则表达式 jdk1.4以后正则表达式已被jdk支持,并且由java.util.regex开发包提供,String类也进行了修改。 可以通过百度搜索邮箱等正则表达式验证。 优点:方便进行验证处理,以及复杂字符串修改处理。 public class RegExTest { public static void main(String[] args) { String regex="[abc]"; String str="a"; System.out.println(str.matches(原创 2021-03-08 20:07:39 · 111 阅读 · 0 评论 -
日期操作类
Date日期处理类 java.util.Date类: import java.util.Date; public class ClockTest { public static void main(String[] args) { Date date=new Date(); System.out.println(date); } } 构造函数:public Date(long date);//他只是对long的一种包装。 Date中有long与日期之间转换的方法。 将long转为Date:p原创 2021-03-07 17:34:24 · 61 阅读 · 0 评论 -
数学操作类
Math数学计算类 其方法都是静态的,可通过类名称直接调用。 一个四舍五入方法:round(); 但是它处理时直接将小数点后的所有进位处理,所以最好自己定义一个四舍五入的方法。 Random随机数生成类 java.util.Random 主要用到的函数: 产生一个不大于边界的自然数:public int nextInt(int bound);// [0,bound) 大数字操作类 BigInteger,BigDecimal java.math包中的。 观察构造函数。 虽然提供此操作,但是需要考虑到性能问原创 2021-03-07 10:12:30 · 105 阅读 · 0 评论 -
java基础类库
StringBuffer类 String是所有项目开发都会用到的功能类,有如下特点: 每一个字符串常量都属于String类的匿名对象。 String有两个常量池:静态常量池和运行时常量池。 String类对象实例化建议使用直接赋值,可直接保存在对象池中方便下次使用 但是String弊端是,内容不允许修改。所以提供了StringBuffer类可用来修改字符串内容。 String和StringBuffer类的区别: StringBuffer没有与String类一样的实例化方式,StringBuffer要像普原创 2021-03-05 13:17:36 · 108 阅读 · 1 评论 -
竞争抢答---多线程案例
实现一个抢答的程序:要求设置三个抢答者(线程),之后同时发出抢答指令,抢答成功提示,未抢答成功返回失败。 牵扯到数据返回,使用Callable是比较方便的处理方式。 package wzr.thread.test3; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class RushToAnswerTest { public static void main(String原创 2021-03-03 17:03:37 · 194 阅读 · 1 评论 -
生产电脑---多线程案例
设置一个生产电脑和搬运电脑类,要求生产出一台电脑就搬走一台电脑,如果没有新电脑产出,则搬运等待,如果生产的没有搬走,则要等待电脑搬走之后再生产,并统计地产电脑的电脑数量。 生产者消费者问题 package wzr.thread.test2; public class ComputerSell { public static void main(String[] args) { Resource res=new Resource(); new Thread(new Producer(res原创 2021-03-03 16:46:12 · 148 阅读 · 1 评论 -
数字加减---多线程案例
package wzr.thread.test1; //经典的多线程开发操作,程序中需要考虑的核心是:加一个,减一个,只在0,1之间。 public class Test { public static void main(String[] args) { Resource res=new Resource(); AddThread at=new AddThread(res); SubThread st=new SubThread(res); new Thread(at,"加法线程 -.原创 2021-03-03 15:54:30 · 257 阅读 · 2 评论 -
线程常用操作方法
线程的命名与取得 Thread类中,有关于线程名字设置的构造方法,成员方法(getName(),setName())。 有关获取当前线程的静态方法(.currentThread())。 package wzr.study02.Thread; public class ThreadNameAndUse { public static void main(String[] args) { MyThreadA mt=new MyThreadA(); new Thread(mt,"Myth原创 2021-03-03 10:39:52 · 104 阅读 · 0 评论 -
多线程深入
优雅停止线程 Thread中,stop()方法将被移出,destroy()销毁,suspend()线程挂起,resume()恢复挂起线程执行。 废除的原因:这些操作会导致线程死锁。 需要线程停止可以使用柔和的方式? package wzr.study03.MultiThread; public class Thorough { public static boolean flag=true; public static void main(String[] args)throws Exception原创 2021-03-03 10:27:01 · 73 阅读 · 0 评论 -
生产者与消费者案例
流程: 生产者负责信息内容的生产,消费者负责信息内容的使用。 生产者完成一项完整的信息之后消费者要从其中取走信息。 如果没有产品,消费者等待生产者生产,如果产品生产满,生产者等待消费者消费产品。 基本代码: package synchronization; public class Syntest { public static void main(String[] args) { Message msg=new Message(); new Thread(new Producer(msg原创 2021-03-02 21:17:34 · 145 阅读 · 0 评论 -
线程同步处理
synchronized关键字可以定义同步方法或同步代码块,同步代码块的操作里只允许一个线程执行。 1.利用同步代码块进行处理 synchronized(同步对象) { 同步代码操作; } 一般进行同步对象处理时可采用当前对象this进行同步。 利用同步代码块解决数据同步访问问题 package synchronization; public class Syntest { public static void main(String[] args) { MyThread mt=new MyT原创 2021-03-02 19:37:17 · 109 阅读 · 0 评论 -
java多线程编程
进程与线程 Java支持多线程 传统DOS采用的是单进程处理,导致病毒入侵无法处理,同一时间只能有一个进程处理。windows开启多进程设计后,可以实现并发。 线程是更小的程序执行单元,是在进程的基础上创建和使用的。 Java是多线程的处理语言。 Thread类实现多线程 Java中提供了java.lang.Thread,继承这个类就表示线程的主体类,Thread类中提供的run()方法为线程的主方法。 正常情况下,如果想要使用类中的方法,需要先产生一个实例化对象,然后调用。run()方法却不能直接调用。所原创 2021-02-18 07:39:30 · 186 阅读 · 3 评论 -
Eclipse第一次了解——下载安装,开发程序,调试,junit测试工具使用
简介 eclipse是一个大型开源组织. 官网下载:www.Eclipse.org Download Packages javaee 安装:自行安装,workspace工作区保留工作的配置 使用JDT开发Java程序 新建一个java project 如果电脑装有多个jdk时,在jre区域选择:Using a project specific JRE Configure JREs…add进行添加工作环境使用的jre 选择standard VM,并在jre home中挑选,从本机选择哪种jdk的包 目录中有原创 2021-02-15 09:35:36 · 353 阅读 · 0 评论 -
链表的定义与使用
链表实现简介 传统的对象数组的操作依赖于脚标的控制,如果想要实现动态维护,成本太高。于是需要可以动态扩充的对象数组。 public class Demo{ public static void main(String args[]){ Node<String> n1=new Node<String>("火车头"); Node<String> n2=new Node<String>("车厢一"); Nod原创 2021-02-13 10:36:17 · 119 阅读 · 1 评论 -
函数式编程
函数式编程比较著名的语言有:haskell、Scala?可以避免掉面向对象编程的繁琐的问题 lamda表达式 lamda表达式的实现要求:SAM(Single Abstract Method)。只有一个抽象方法的接口被称为函数式接口,我们称它为函数式接口,只有函数式接口才可以被lamda使用。 public class Demo{ public static void main(String args[]){ IMessage msg=(str) -> {原创 2021-02-11 16:27:39 · 109 阅读 · 0 评论 -
内部类——详
内部类的基本概念 public class Demo{ public static void main(String args[]){ Outside out=new Outside(); out.fun(); } } class Outside{ private String info="outside"; public void fun(){ Interior in=new Interior(); in.pr原创 2021-02-11 11:20:10 · 97 阅读 · 0 评论 -
异常的捕获及处理——详尽
异常对程序的影响 异常是指导致程序中断执行的一条指令流。 当程序出现非致命错误时,需要一个完善的异常处理机制,保证程序顺利执行。 处理异常 try{ // 可能出现异常的语句 } [ catch(异常类型 异常对象){ // 异常处理 }... ] [ finally{ // 不管是否有异常,最终都会执行 } ] 处理多个异常 public class Abnormal{ public static void main(String args[]){ System.out原创 2021-02-10 21:21:42 · 391 阅读 · 0 评论