Java基础
文章平均质量分 65
Java基础知识
CodeJiao
今之视昔,亦如后世视今。
展开
-
Java时间API -- 对时间类型数据进行操作和格式化(Date、SimpleDateFormat、Calendar、LicalDateTime...)
Java的Date类是用于处理日期和时间的类。它位于java.util包中,可以用于获取当前日期和时间,以及进行日期和时间的操作。Date类有以下几个重要的方法::无参构造方法,创建一个表示当前日期和时间的Date对象。:通过毫秒数来创建一个Date对象,毫秒数是从1970年1月1日00:00:00 GMT开始计算的。原创 2024-03-08 14:16:05 · 1793 阅读 · 0 评论 -
Java常用API -- BigDecimal类的用法和注意事项
BigDecimal主要用来操作(大)浮点数,BigInteger主要用来操作大整数(超过 long 类型)。BigDecimal的实现利用到了BigInteger, 所不同的是BigDecimal加入了小数位的概念。原创 2024-03-07 12:08:59 · 620 阅读 · 0 评论 -
Java基础:控制台输入(Scanner)和输出(print、println、printf)
控制台输入(Scanner)和输出(print、println、printf)原创 2021-12-27 18:52:48 · 20792 阅读 · 0 评论 -
JUC并发编程 概览 进程与线程-- JUC介绍 & 线程/进程 & 并发/并行 & Java代码查看CPU的核数
1. JUC介绍JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包。2. 线程/进程进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义,线程可以利用进程所有拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把原创 2021-08-16 22:07:34 · 420 阅读 · 1 评论 -
Java多线程: 线程、进程、多线程、下载网络图片、买火车票、龟兔赛跑
普通方法调用和多线程Process(线程)和Thread(线程)说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的依次执行过程,它是一个动态的概念。是系统资源分配的单位。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的的单位。注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,原创 2021-02-21 16:29:48 · 255 阅读 · 3 评论 -
Java IO流 处理流--数据流
1. 数据流DataInputStream 和 DataOutputStream 分别继承自InputStream 和 OutputStream , 它属于处理流,需要分别“套接”在InputStream 和 OutputStream类型的节点流上。DataInputStream 和 DataOutputStream 提供了可以存取与机器无关的Java原始类型数据(int,double等)的方法。DataInputStream 和 DataOutputStream 的构造方法【数据流测试代码原创 2021-08-05 13:35:23 · 907 阅读 · 0 评论 -
Java IO流 InputStream(字节输入流) & OutputStream(字节输出流)
1. InputStream(字节输入流)我们看到的具体的某一些管道,凡是以InputStream结尾的管道,都是以字节的形式向我们的程序输入数据。继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(Byte)=> (8bit);下图中深色为节点流,浅色为处理流。InputStream的基本方法read()方法是一个字节一个字节地往外读,每读取一个字节,就处理一个字节。read(byte[] buffer)方法读取数据时,先把读取到的数据填满这个byte原创 2021-08-04 17:57:53 · 5419 阅读 · 0 评论 -
Java IO流-- JAVA流式输入/输出原理 & 输入输出流分类 & 节点流和处理流 & IO流总结
1. JAVA流式输入/输出原理在Java程序中,对于数据的输入/输出操作以“流”(Stream)方式进行;Java提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据。读入写出流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以原创 2021-08-04 13:02:08 · 1562 阅读 · 0 评论 -
Java IO流 打印流(Print) & 对象流(Object) & IO流总结
1. 打印流(Print)PrintWriter 和 PrintStream 都属于输出流,分别针对与字符和字节PrintWriter 和 PrintStream 提供了重载的printPrintln方法用于多种数据类型的输出PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息PrintWriter 和 PrintStream有自动flush功能打印流的构造方法【测试代码】:log.txt 【程序运行前】TestTransfo原创 2021-08-05 14:10:07 · 1335 阅读 · 1 评论 -
Java IO流 处理流--转换流
1. 转换流InputStreamReader 和 OutputStreamWriter 用于字节数据到字符数据之间的转换InputStreamReader 需要和 InputStream “套接” 。OutputStreamWriter 需要和 OutputStream “套接” 。转换流在构造时可以指定其编码集合转换流非常的有用,它可以把一个字节流转换成一个字符流,转换流有两种,一种叫InputStreamReader,另一种叫OutputStreamWriter。Inp原创 2021-08-04 23:17:04 · 839 阅读 · 1 评论 -
Java IO流 Reader流(字符输入流) & Writer流(字符输出流)
InputStream(字节输入流) & OutputStream(字节输出流)1. Reader流Reader : 和InputStream的唯一的区别就在于读的数据单位不同继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit)16位:一个字符也就是两个字节,使用Reader流读取数据时都是两个字节两个字节往外读的,为什么还要有这两种两个字节的读取方式呢? 因为有些字符是占2个字节的,如我们的中文字符在Java里面就是占两个字节的。如果采用一个字节一原创 2021-08-04 20:44:42 · 2895 阅读 · 0 评论 -
Java IO流 处理流--缓冲流(Buffering)
1. 缓冲流(Buffering)缓冲流要”套接“在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。Java提供了四种缓冲流,常用构造方法如下:缓冲输入流支持其父类的mark和reset方法。BufferedReader提供了readLine方法用于读取一行字符串BufferedWriter提供了newLine用于写入一个行分隔符对于输出的缓冲流,写出的数据会现在内存中缓存,使用flush方法将会使内存中的数据立刻写出带有缓冲区的,缓冲区(Buffe原创 2021-08-04 22:28:54 · 2100 阅读 · 1 评论 -
Java面向对象(OOP)--面向过程 & 面向对象 & OOP详解
1. 面向过程 & 面向对象语言的进化发展跟生物的进化发展其实是一回事,都是”物以类聚”。相近的感光细胞聚到一起变成了我们的眼睛,相近的嗅觉细胞聚到一起变成了我们的鼻子。语句多了,我们将完成同样功能的相近的语句,聚到了一块儿,便于我们使用。于是,方法出现了!变量多了,我们将功能相近的变量组在一起,聚到一起归类,便于我们调用。于是,结构体出现了!再后来,方法多了,变量多了!结构体不够用了!我们就将功能相近的变量和方法聚到了一起,于是类和对象出现了!寥寥数语,就深刻的展示了语言的进化历史!其原创 2021-07-30 21:55:17 · 969 阅读 · 0 评论 -
Java--创建与初始化对象 & 构造器 & 引用类型 & 属性 & 类的方法 & java对象的创建和使用
1. 创建与初始化对象使用new关键字创建对象使用new关键字创建的时候,除了分配内存空间之外,还会给 创建好的对象 进行默认的初始化 以 及对类中构造器的调用。分析: 如果程序运行了这段代码class Student { private String name; public static void main(String[] args) { Student student = new Student(); }}为对象分配内存空间,将对象的原创 2021-07-31 10:12:06 · 2370 阅读 · 0 评论 -
Java面向对象(OOP)--final修饰符 & abstract修饰符
1. final修饰符1.1 final修饰类用final修饰的类不能被继承,没有子类。例如:我们是无法写一个类去继承String类,然后对String类型扩展的,因为API中已经被String类定义为final的了.我们也可以定义final修饰的类:1.2 final修饰方法用final修饰的方法可以被继承,但是不能被子类的重写。例如:每个类都是Object类的子类,继承了Object中的众多方法,在子类中可以重写toString方法、equals方法等,但是不能重写原创 2021-08-02 10:18:18 · 1037 阅读 · 0 评论 -
Java面向对象(OOP)--内部类(成员内部类)
1. 内部类很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了1.1 内部类概述内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。内部类不是在一个java源文件中编写俩个平行的俩个类,而是在一个类的内部再定义另外一个类。 我可以把外边的类称为外部类,在其内部编写的类称为内部类。内部类分为四种:成员内部类静态内部类局部内部类匿名内部类1.2 成员内部类原创 2021-08-02 23:43:17 · 932 阅读 · 1 评论 -
Java面向对象(OOP)--面向对象三大特性之一: 封装(封装的步骤、作用和意义、方法重载)
1. 封装我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关。需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装。白话:该露的露,该藏的藏专业:我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)在定义一个对象的特性的时候,有必要决定原创 2021-08-01 00:18:01 · 1272 阅读 · 0 评论 -
Java面向对象(OOP)--内部类(匿名内部类)
1. 匿名内部类没有(或者不需要)命名来初始化类,就称为匿名内部类。在这四种内部类中,以后的工作可能遇到最多的是匿名内部类,所以说匿名内部类是最常用的一种内部类。什么是匿名对象?如果一个对象只要使用一次,那么我们就是需要new Object().method()。 就可以了,而不需要给这个实例保存到该类型变量中去。这就是匿名对象。匿名内部类跟匿名对象是一个道理:匿名对象:我只需要用一次,那么我就不用声明一个该类型变量来保存对象了。匿名内部类:我也只需要用一次,那我就不需要在原创 2021-08-03 23:22:20 · 1442 阅读 · 0 评论 -
Java面向对象(OOP)--内部类(局部内部类)
1. 局部内部类局部内部类是在一个方法内部声明的一个类局部内部类中可以访问外部类的成员变量及方法局部内部类中如果要访问该内部类所在方法中的局部变量,那么这个局部变量就必须是final修饰的示例:public class Outer { private int id; //在method01方法中有一个Inner内部类,这个内部类就称为局部内部类 public void method01() { class Inner { p原创 2021-08-03 22:40:54 · 921 阅读 · 0 评论 -
Java面向对象(OOP)--static修饰符(static变量、static方法、代码块和静态代码块、创建和初始化对象的过程、静态导入)
1. static修饰符原创 2021-08-02 16:33:16 · 984 阅读 · 0 评论 -
Java面向对象(OOP)--内部类(静态内部类)
1. 静态内部类看到名字就知道,使用你static修饰的内部类就叫静态内部类。既然提到了static,那我们就来复习一下它的用法:一般只修饰变量和方法,平常不可以修饰类,但是内部类却可以被static修饰。...原创 2021-08-03 21:22:30 · 881 阅读 · 0 评论 -
Java面向对象(OOP)--面向对象三大特性之一: 继承(继承、Object类、Super关键字、方法重写)
1. 继承现实世界中的继承无处不在。比如:动物:哺乳动物、爬行动物哺乳动物:灵长目、鲸目等。继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。为什么需要继承?继承的作用?第一好处:继承的本质在于抽象。类是对对象的抽象,继承是对某一批类的抽象。第二好处:为了提高代码的复用性。extands的意思是“扩展”。子类是父类的扩展。【注】JAVA中类只有单继承,没有多继承! 接口可以多继承!1.1 继承...原创 2021-08-01 23:29:05 · 1074 阅读 · 2 评论 -
Java面向对象(OOP)--this关键字详解
1.5 this关键字在类中,可以使用this关键字表示一些特殊的作用。1.5.1 this在类中的作用:【区别成员变量和局部变量】【调用类中的其他方法】注:默认情况下,setName(“tom”)和this.setName(“tom”)的效果是一样的【调用类中的其他构造器】注:this的这种用法,只能在构造器中使用.普通的方法是不能用的.并且这种调用的代码只能出现在构造器中的第一句.【示例】1.5.2 this关键字在类中的意义this在类中表示当前类将原创 2021-07-31 00:40:08 · 980 阅读 · 0 评论 -
Java面向对象(OOP)--面向对象三大特性之一:多态(多态、方法绑定、instanceof和类型转换、(重写、重载和多态的关系))
1. 多态1.1 认识多态多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法,从而实现更加灵活的编程,提高系统的可扩展性。允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。相同类域的不同对象,调用相同的方法,执行结果是不同的一个对象的实际类型原创 2021-07-31 23:35:06 · 1016 阅读 · 0 评论 -
Java注解反射 -- 注解(内置注解、元注解、自定义注解)
什么是注解(Annotation)Annotation是从JDK5.0开始引入的新技术.Annotation的作用:不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取.Annotation的格式:注解是以"@注释名"在代码中存在的,还可以添加一些参数值﹐例如:@SuppressWarnings(value=“unchecked”).Annotation在哪里使用?可以附加在package , class , metho原创 2021-02-25 22:03:02 · 216 阅读 · 0 评论 -
Java注解反射 -- Java反射机制概述&得到Class类的几种方式&通过反射调用方法
静态语言VS动态语言动态语言:是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。主要动态语言: Object-C、C#、JavaScript、PHP、Python等。静态语言与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++。Java不是动态语言,但Java可以称之为“准动态语言”。即Java有一定的动态性,我们可以利用反射机制获得类原创 2021-02-26 09:56:54 · 448 阅读 · 1 评论 -
Java注解反射 -- Java获取注解信息(练习:ORM)
示例:package annoAndRe.reflection;import java.lang.annotation.*;import java.lang.reflect.Field;// 练习反射操作注解@TableTian("db-stu1")public class Test09 { public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {原创 2021-02-26 16:31:49 · 257 阅读 · 1 评论 -
Java注解反射 -- Java之类的加载过程
Java内存分析Java内存分析类的加载过程示例:package annoAndRe.reflection;public class Test04 { public static void main(String[] args) { A a = new A(); System.out.println(A.m); /* 1.加载到内存,会产生一个类对应的class对象 2.链接,链接结束后 m =0原创 2021-02-26 11:12:11 · 236 阅读 · 0 评论 -
Java注解反射 -- Java获取类的运行时结构
通过反射可以获取运行时类的完整结构:Field 字段Method 方法Constructor 构造器Superclass 父类Interface 接口Annotation 注解示例:package annoAndRe.reflection;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class Test06原创 2021-02-26 13:25:36 · 146 阅读 · 1 评论 -
Java注解反射 -- Java动态创建对象 并执行对象方法
示例:package annoAndRe.reflection;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Test07 { public static void main(String[] args).原创 2021-02-26 15:36:00 · 445 阅读 · 0 评论 -
Java常用类--File类
1. File类1.1 File类简介在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性1.2 File类的构造方法(构造方法不会产生新的文件)public原创 2021-07-27 13:17:53 · 1249 阅读 · 4 评论 -
Java常用类--String类(String的不可变性 & 字符串常量池 & 享元模式)
1.String的不可变性当我们去阅读源代码的时候,会发现有这样的一句话:我想大家应该就知道为什么String不可变了,String类被final修饰,官方注释说明创建后不能被改变,但是为什么String要使用final修饰呢?了解一个经典的面试题 public static void main(String[] args) { // 创建字符串对象 String a = "abc"; String b = "abc";原创 2021-07-19 19:19:13 · 431 阅读 · 0 评论 -
Java常用类--String类概述 & 创建字符串的2种方式
1. String类1.1 String概述在API中是这样描述:String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。1.2 创建字符串的2种方式创建字符串的2种方式: 1.2.1 直接赋值方式直接赋值方式创建对象是在方法区的常量池String str="hello";//直接赋值的方式1.2.2 通原创 2021-07-19 16:41:39 · 849 阅读 · 0 评论 -
Java常用类--File类讲解
Java之I/O流(File类)java.io.File类java把电脑中的文件和文件夹(目录)服装为了一个File类,我们可以使用File类对文件和文件夹进行操作我们可以File类的方法:创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小**注意:**File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法字段Modifier and TypeField and Descriptionst原创 2020-11-27 15:16:53 · 555 阅读 · 1 评论 -
Java常用类--String类常用方法
1. String类常用方法1.1 String的判断常用方法演示: public static void main(String[] args) { // 创建字符串对象 String s1 = "hello"; String s2 = new String("hello"); String s3 = new String("HELLO"); // boolean equals(Obj原创 2021-07-19 17:14:56 · 293 阅读 · 0 评论 -
Java常用类--Java创建字符串的2种方式
创建String对象,有两种方式:一是new型:String s = new String("abc");另一种是双引号型:String s = "abc";那么这两种方式有什么区别呢?这两种方法生成的字符串对象,在内存中的存取机制不同。Java为String类型提供了缓冲池机制,当使用双引号定义对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。示例代码如下:String a = "tom";String原创 2021-05-30 18:03:40 · 1594 阅读 · 2 评论 -
Java常用类--Object类
1. Object类大家都知道Object是所有类的父类,任何类都默认继承Object。理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类。由于所有的类都继承在Object类,因此省略了extends Object关键字。Obejct类的主要方法toString()getClass()equals()clone()finalize(其中toString(),getClass(),equals是其中最重要的方法。注意: Object类原创 2021-07-17 16:30:45 · 422 阅读 · 0 评论 -
Java常用类--String类(StringBuilder 和 StringBuffer)介绍
1. StringBuilder 和 StringBuffer1.1 StringBuilder概述:StringBuilder 是一个可变的字符序列。它继承于AbstractStringBuilder,实现了CharSequence接口。StringBuffer 也是继承于AbstractStringBuilder的子类;但是,StringBuilder和StringBuffer不同,前者是非线程安全的,后者是线程安全的。StringBuilder 和 CharSequence之间的原创 2021-07-19 20:21:14 · 519 阅读 · 0 评论 -
Java常用类--包装类
1. 包装类1.1 包装类的介绍虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性、没有方法可调用。 沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单、有效地进行常规数据处理。...原创 2021-07-17 23:51:03 · 284 阅读 · 1 评论 -
Java常用类--Math类
1. Math类Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用常用值与函数Math.PI 记录的圆周率Math.E 记录e的常量Math中还有一些类似的常量,都是一些工程数学常用量。Math.abs 求绝对值Math.sin 正弦函数 Math.asin 反正弦函数Math.cos 余弦函数 Math.acos 反余弦函数Math.tan 正切原创 2021-07-17 23:56:33 · 1206 阅读 · 0 评论