![](https://img-blog.csdnimg.cn/20200525162924468.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
从JAVA基础
千里之行始于足下
众纳
知道的越多越知道太多不知道的,相反无知的人却以为无所不能!
展开
-
Java 中的Date 与LocalDateTime 相互转换的解决方案
需求: 我们在开发过程中会把Date与LocalDateTime同时使用,或者使用Date但想使用LocalDateTime的方法(比如拿年、小时、分等做比较非常简单),这时我们需要把二者相互转换。1.Date 转 LocalDateTime示例companyWorkTime类startTime 、endTime是DateDateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")...原创 2022-05-21 09:28:08 · 3527 阅读 · 0 评论 -
框架基础(6) :浅谈Java注解
在Java开发中,特别框架中充拆着各种注解,注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”。应用场景可以通过反射给类赋值。在这里做个示例给演示一下定义一个注解@Retention(RetentionPolicy.RUNTIME)//定义在运行时启用public @interface MyAnnotation { //定义一个变量 public String name();//变量 public int age();//单个变量 public Stri原创 2020-06-13 15:55:01 · 89 阅读 · 0 评论 -
框架基础(5) : 手把手实现的个完整的AOP
上一章讲了通过动态代理实现了一个AOP,只是一个了解一下概念,那么我们实现一个简单的框架的AOP。那么我们来个复杂的代理;用到了工厂模式、文件读取、JavaBan、动态代理、内省等知识。如果这些还不明白的话去看一下我的前面写的教程。需求:我们的用户管理时都要记录开始日志与结束日志1.创建一个类public class User{ private String name; private String pwd; public User() { } public原创 2020-06-13 10:59:33 · 131 阅读 · 0 评论 -
框架基础(4) 捋一捋 AOP
AOP 有点代理模式的意思,AOP 世称:“面向切面编程”,说白了就让专业的类做专业的事,不做与本专业无关的事。比如说我们一个类,当我们业务操作的时候,操作前做权限验证;操作后要做日志记录,而这些却不是类本身应该办的事; 而权限 、日志、事务…等交给应该处理的去处理,而不影响本身业务。这就叫面向切面编程。这里举个简单的示例通过动态代理的方式实现AOP1.定义一个接口interface Isay{ public void say();}2.让一个类去继承这个类class Stu impl原创 2020-06-12 16:14:34 · 158 阅读 · 0 评论 -
框架基础(3) 捋一捋 内省
很多人内省 与 反射 容易搞乱,反射在上一篇已经介绍了,主要用于用(大)Class 类取(小)class类的成员变量、方法、构造。而内省则是用于利用取来的信息搞些事情。用于测试的类public class Stu { private String name;//姓名 这里声明为公有成员 private int age;//年纪 //1类的构造 //1-1.空构造 public Stu() { } //1-2 完整构造 public原创 2020-06-12 13:29:10 · 149 阅读 · 0 评论 -
框架基础(2) 捋一捋 反射
Class(常叫做大class)它是类中的类,通过个类可以取类中的相关信息,为什么要取类中的信息呢?目的就是用取的信息做想做的事,假设我们不知道什么时候用一个或一些类,我们当然希望当用到自动用到,不用的时候自动不用 可能这话有点难以理解。什么叫用到的时候自动用到,难道你不知道什么用为什么写一个类呢?因为是我们希望让框架帮我们托管我们的代码,而不是手动创建,这就是动态创建而非用程序写死。讲了太多,我们做个实例加深一下印象。声明一个类,并把一个成员变量为公用变量与私有变量public String nam原创 2020-06-12 09:16:36 · 120 阅读 · 0 评论 -
框架基础(1) 捋一捋 JavaBean以及它的对应的工具类
什么是JavaBean?我个人总结:具有统一被识别(给谁用方法)结构的类称之JavaBean。比如类中的成员变量具有Get 与Set方法。一个标准的JavaBean示例如下public class Stu { private String name;//姓名 private int age;//年纪 //1类的构造 //1-1.空构造 public Stu() { } //1-2 完整构造 public Stu(String name,原创 2020-06-11 17:40:33 · 100 阅读 · 0 评论 -
Java 动态代理开发模式
前面讲了静态代理开发模式,因为我们了解了反射,完成可以通过反射机制实现动态代理需求:老师与学生都有工作,而学生的工作是学习,老师的工作是教书。而需求是需要记录开始工作与结束工作,那么他们有共同点,用传统方式实现代理需要写两个代理类,而动态代理则不需要。只需要一个动态代理就能完成。1.先定义一个接口interface subject{ public void working();}2.准备两个类来继承接口class stu implements subject{ private原创 2020-06-09 09:52:21 · 201 阅读 · 0 评论 -
关于Java Map 的几个常见数据处理方法
前面做了关于Map的学习,在JDK1.8之后,增加了关于Map几个实用的方法;1.putIfAbsent我们在使用map的put时可以向集合中增加数据,如果Key已经存在值则替换,而putIfAbsent 这个方法添加时如果Key存在值则不替换。Map<Integer,String> map=new HashMap<>();map.put(1,"aaa");map.put(2,"bbb");map.put(3,"fffs");map.putIfAbsent(3,"sss原创 2020-06-06 15:15:08 · 830 阅读 · 0 评论 -
利用Gjson 与阿里Json分别实现对象转JSON、集合转Json
如题,直接开撸1.准备一个用来实验的类class User{ private String name; private Integer followers_cout; @Override public String toString() { return "User{" + "name='" + name + '\'' + ", followers_cout=" + followers_co原创 2020-06-06 10:42:12 · 285 阅读 · 0 评论 -
Java 解析JSON 2 利用GJson解析常见的JSON数据
前面我已经给大家讲了利用GJson 解析一个简单的JSON,接下来演示一个较常见的Json文件(gjon 官方给的示例)1.Json 文件[ { "id": 10011, "text": "How I read a Json Stream in Java", "geo": null, "user": { "name": "json_newb", "followers_cout": 41 } }, { "id": 1002原创 2020-06-06 09:38:48 · 304 阅读 · 0 评论 -
Java 解析JSON 利用GJson简单解析一个数组JSON
JSON 格式文件非常常见,解析Json的第三方jar 也非常多,常见的就是谷歌与阿里的,今天就是利用谷歌的Gjson完成一个数组的解析1.准备maven文件配置<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4<原创 2020-06-05 10:53:40 · 693 阅读 · 0 评论 -
利用DOM4J XML解析 Java细说 解析XML技术
DOM4J 一个被广泛使用的技术,解析大文件时表现稳定,因此很多框架都是用这种方式解析。1.准备一个XML文件<?xml version="1.0" encoding="utf-8" ?><peopel> <person personid="m001"> <name>Tony</name> <address>beijing</address> <tel>原创 2020-06-05 09:40:15 · 145 阅读 · 0 评论 -
利用JDOM XML解析 Java细说 解析XML技术
JDOM 是开源的JAVA 解析包,使用方式,因为我用的是IDEA,所以如果已创建Maven 就去修改pom.xml,如果没有就再去创建一下再修改一下pom.xml 文件。<dependencies> <dependency> <groupId>org.jdom</groupId> <artifactId>jdom</artifactId> <原创 2020-06-05 09:39:58 · 245 阅读 · 0 评论 -
3-N、Java Stream接口应用心得
Stream 是JDK1.8引入的新接口,类似迭代器的功能,可以更方便使用lambda表达式创建形式Stream<String> s= Stream.of("fs","fast","test");遍历方式1s.forEach((str)-> System.out.println(str));遍历方式2s.forEach(System.out::print);过虑s.filter((str)->str.length()>3).forEach(System.o原创 2020-06-05 09:39:41 · 90 阅读 · 0 评论 -
利用DOM XML解析 Java细说 解析XML技术
DOM 解析XML 是一次性读取,也就是把XML当作一个对象读取。1.准备XML<?xml version="1.0" encoding="utf-8" ?><peopel> <person personid="m001"> <name>Tony</name> <address>beijing</address> <tel>10086</tel&原创 2020-06-04 18:55:15 · 109 阅读 · 0 评论 -
利用SAX XML解析 Java细说 解析XML技术
实现原理分析先利用SAXParserFactory 创建工厂,然后通过工厂创建解析器,接并逐步使用一个对象类的数据处理类并继承DefaultHandler 类,再接着通过输入流的形式加载,再次把加载的数据流交给解析器处理;1.准备XML<?xml version="1.0" encoding="utf-8" ?><peopel> <person personid="m001"> <name>Tony</name>原创 2020-06-04 16:40:10 · 143 阅读 · 0 评论 -
2-N 剖析 Java Lambda 表达式
自JDK 1.8之始 Java Lambda 引入,不仅使Java的语言变得更简洁,而且省去了原来处理匿名内部类的麻烦。接下来我先从应用场景一步步深入。使用一个类,实现接口方法interface Stustudy{ public void study();}编写一个类class Stu implements Stustudy{ private String name; private int age; public Stu() { } publ原创 2020-06-03 09:24:03 · 98 阅读 · 0 评论 -
1.唠一唠Java 的枚举类型
假设我们通过如下方式定义一些常量class sex{ public static final int sexw=0;//女人 public static final int sexm=1;//男人}我们使用时if (i==sex.sexm){ System.out.println("man"); };但是这有一个问题,就是在编程的时候无法检查定义的合理性。比如当 i=3的时候正常编译不应该让通过的。这时我们就需要检举类型enum se原创 2020-06-01 11:34:52 · 649 阅读 · 0 评论 -
2-N、Java 当存储对象是类的数组 实现排序解决方案
通知情况下,我们对一个数组进行排序有对应Arrays.sort的方法实现的,如下String [] st1={"kf","ms","ac","ba"}; Arrays.sort(st1); for (String st: st1) { System.out.println(st.toString()); };但是Arrays.sort 只实现的基本类型的排序,无法实现自定义类的实现。学生类class原创 2020-06-01 08:30:02 · 124 阅读 · 0 评论 -
6-1、初识 Java Map
我们前面讲过List 集合,但会发现当我们需要通过一个条件查集合中的结果时非常麻烦。而Map这个就能解决这个问题,因为Map是一个键值对存储,因为有一个键是唯一的,所以它有点类似数据库表中增加一个主键(也可以理解为索引).List 是通过add方法添加数据的,而Map是通过put方法增加并给相应的主键值的形式处理。而获取是通过get并给相应的键值得到结果。在这里做一个简单的例子准备类class Stu implements Comparator<Stu> { private Str原创 2020-05-30 17:40:41 · 83 阅读 · 0 评论 -
5.Java 存储全局常量so easy
我们在做CS程序开发的时候常常把一些系统配置信息存储下来供用户配置,常见的如ini文件、xml文件等。我们Java开发中想把一些如数据库连接信息写在配置文件里怎么做呢。以IDEA这个IDE开发工具为例,登陆一个properties文件,在src文件上右键找到new 找到Resource Bundle 创建一个文件,命名为dbconfig接下来配置内容如下sys.ip=127.0.0.1db.name=testdbdb.user=sadb.pwd=fdsafws@32程序调用可以如下操作p原创 2020-05-30 08:59:13 · 475 阅读 · 0 评论 -
4、函数式接口深入体会
方法与函数的都是为了实现一个目的,不同的了函数有返回值而方法没有;需求是这样的,当我们输入一个商品信息的代号的时候自动把小写转成大写(忽略中文情况)。你当然可以直接把字符toUpperCase()方法实现。那么要求用函数方式实现怎么办?传统做法public static String dx1(String s){ return s.toUpperCase(); }调用方式String x="abcd";System.out.println(dx1(x));Java原创 2020-05-29 17:00:33 · 156 阅读 · 0 评论 -
3.3 捋一捋 Java 集合各种遍历方式
前期准备类代码class Stu implements Comparator<Stu> { private String name; private int age; public Stu() { } public Stu(String name, int age) { this.name = name; this.age = age; } @Override public int comp原创 2020-05-29 11:34:58 · 133 阅读 · 0 评论 -
3-2、集合之 Set 细品 HashSet 、LinkHashSet、TreeSet
前面我已经提到了List 是一个有序集合,可以允许重复,而今天要研究的Set 是无序集合,不允许重复;Set 分别被HashSet、TreeSet、LinkHashSet继承。本文以HashSet 举例 介绍Set的用法快速进入关于List 的文章不可重复测试 Set<String> s=new HashSet<>(); s.add("a"); s.add("b"); s.add("c"); s.add("c原创 2020-05-28 19:53:21 · 149 阅读 · 0 评论 -
3-1、集合之 List ArrayList 与vector 理解
List 是一个有序集合,那么可以看出来数组也是集合,他们的区别在在于数组要定义长度,而List 则不需要。集合的定义非常简ArrayList 与 vector 都是有序集合,允许重复,一般多线程的情况下使用有序集合才用vector,因为它能保证线程安全。原创 2020-05-28 15:44:48 · 362 阅读 · 0 评论 -
2.Java 自定义异常的理解与心得
几乎所有项目中都会使用到自定义异常类,比如我们捕获到一个异常后要把数据做事务回滚以保证数据的准确性、合理性、真实性。举例:一个系统中的系统用户的新增必须是管理员才能新增第一步自定义一个异常类(空现就可以了)//定义一个类 并继承Excetion类public class MyException extends Exception{ public MyException() { super(); } public MyException(String mes原创 2020-05-28 10:44:15 · 397 阅读 · 0 评论 -
2、Java异常处理 理解心得
程序运行过程中你无法提前预知使用者的操作(虽然你在程序代码中尽可能多的考虑到可能会出异常的情况),这就好比在游戏中你永远不知道你的队友是谁一样!那么我们就需要做异常处理。这里需要说明的处理异常的目的是为了不让挂掉。举例:输入两个值,求合;当客户不小心把小数点输入成了句号或者中文模式的点,那么就可能出错;如下:import java.util.Scanner;public class Mtest { public static void main(String[] args) {原创 2020-05-28 09:22:55 · 559 阅读 · 0 评论 -
3-3、Java 适配器模式心得
适配器模式的应用场景:首先不是每个人事先都能想的那么完事;现实生活中也非常见,比如,笔记本自带Usb接口,当时认为这一个就够用了,可是那天客户带了一个TyepC的接口U盘;那么这个笔记本电脑做为一个项目,那么就有点麻烦了。现在我就拿这个做为例子进行说明场景复现//Usb 接口interface Usb{ public void work();}//Usb 接口类class NetBookusb implements Usb{ @Override public void w原创 2020-05-26 15:54:05 · 291 阅读 · 0 评论 -
3-2、Java 静态代理模式心得
前面讲了工厂模式,那么要做控制用工厂模式就有点力不从心了,本着专业的人做专业的事,在程序设计方面也是用需求决定功能,工厂模式专注于模板,而代理模式的核心是控制。//------------定义一个接口interface Act{ public void work();}//------------定义一类继承接口class WebAct implements Act { @Override public void work() { System.out.pr原创 2020-05-26 14:32:06 · 179 阅读 · 0 评论 -
3-1、Java 简单工厂模式心得
情景需求是这样的:首先有一个人的接口,当不同的角色的人做不同角色的事;比如同样是工作,IT则是通过电脑工作,而仓库管理员则是通过汽车工作。对于新手来说通常会先定义一个" 人" 的 接口,然后去定例化,再调用方法,不是说这种不可以,但代码量会变多,并且看起来冗余,维护不方便;如下所示//----------------------定义一个人接口interface Person{ public void work();}//-------------------职业为IT 继承 人 接口cl原创 2020-05-26 13:58:16 · 257 阅读 · 0 评论 -
1-1 Java基础 针对方法 的理解
其实方法与其它语言一样,就为了实现一个或多个功能的定义代法可以理解为方法(这是我自己理解的,可能表达不太准确)。比如:想达到吃饭的目的,那么需要有张口;那么张口就是一个方法;一个方法必然是实现或达到特定目的;常见的如下public class Mtest { //这是一个类的默认方法 public static void main(String[] args) { System.out.println("ssss"); }}再深入一点:在Java 中我们定原创 2020-05-26 10:53:40 · 110 阅读 · 0 评论 -
1-N Java内部类 匿名内部类
匿名内部类是指在类中增加一个类,但是没有名称就叫匿名内部类;本文仍以学校为例子说明;1.匿名内部类:抽像内部类//0 准备:抽像一类学生类abstract class Stu{ public abstract void run();}实现class School{ String schoolname="清华大学";//成员变量 //示例1 匿名内部类 之抽像匿名内部类 public void print(){ //1.直接调用直接并重写方法原创 2020-05-26 10:33:45 · 134 阅读 · 0 评论 -
1-N Java内部类之 方法内部类 心得
内部类不仅可以在一个类的成员中定义,也可以在一个方法中定义,在类成员中定义的类叫成员内部类,在方法中定义的类是方法内部类;关于成员内部类请参照 转到成员内部类还是拿学校定义一个类作为例子,直接上代码class School{ //1定义一个方法 public void PrintSchoolName(String Schoolname,String Cname){ //2方法内定义一个类 也就所谓的方法类 class Class{原创 2020-05-26 09:26:39 · 155 阅读 · 0 评论 -
1-N Java内部类之 成员内部类 心得
内部类可能会被误解为Java自带的类,其实是类中的类叫内部类。接下来以个实例说明内部类比如一个学校类class School{ private String name;//用于接收公司名称 public School(String name) { this.name = name; } //2 在这里创建公用方法供外部调用 public void schoolclass(){ Class c=new Class();原创 2020-05-26 08:52:17 · 145 阅读 · 0 评论 -
1-N Java接口 学习心得
Java 的面向接口编程是一个特色,接口用来定义方法的;那么如何设计一个相对合理的接口呢!仍然用来举例动物,同样都有吃的行为(方法),那么需要定义一个接口;interface Ieat{ public void eate(String str); }接下来会有人,猫 承接接口class Person implements Ieat{ @Override public void eate() { System.out.println("person");原创 2020-05-25 19:30:37 · 311 阅读 · 0 评论 -
0-2、Java 学习前的策略
因为是自学,所以要制定一个策略:首先听取朋友的建议并结合自己的实际情况制定的一个可行的方式方法。因为每个人的情况都不一样,而我采用如下的策略基础类资料主要是看JAVA大神 廖雪峰的官方网站(吃水不忘挖井人,在这里分享一个链接)另一个是千峰教育的JAVA基础视频教程(其实我已经看过一遍了,觉得讲得非常细,配合雪峰的官网资源非常不错,如果需要可以在评论处留下邮箱,也可以找他们官方;当然自学学不下去或者一点基础都没有那么建议去他们官网报个班)。主要目标是做JavaWeb开发,有选择性的学习(指前期,比如多原创 2020-05-25 17:03:00 · 91 阅读 · 0 评论 -
0-1、来自Java 小白的前言
个人一直以来主要从事桌面应用开发,开始使用的VB开发,发现开发的程序到客户端运行时会常提示缺少DLL之类,于是就换也Delphi开发;水平一直属于一瓶不满半瓶晃悠;另外Delphi虽然能解决程序发布就能用,但是很多应用已经不在基于WinForm而是基于WEB开发;虽然Delphi也使出浑身招数来满足web就用的需求,只叹是英雄暮年;长痛不如短痛,于是考虑转型Java,当然我承认这不是一个很好的选择,因为大部分Java的人开始转去Python。这些不是我考虑的因素,因为适应的才是最好的;我会长期更新一些学原创 2020-05-25 16:43:42 · 97 阅读 · 0 评论