Java基础
文章平均质量分 50
Java的基础知识
小鑫-Chen
持之以恒
展开
-
20-01 反射
类加载器的概述和加载时机1、类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载:就是指将 class 文件读入内存,并为之创建一个 Class 对象,任何类被使用时系统都会创立一个 Class 对象。...原创 2021-03-11 09:51:33 · 135 阅读 · 1 评论 -
19-04 IO字符流
字符流字符流是什么?字符流是可以直接读写字符的IO流字符流读取字符,就要先读到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节再写出FileReaderpublic class Demo1_FileReader { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("xxx.txt"); int c;原创 2021-01-25 10:10:40 · 76 阅读 · 0 评论 -
19-03 IO字节流
FileInputStreampublic class Demo1_FileInputStream { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("./xxx.txt"); //创建流对象 int b; while((b = fis.read()) != -1){ //从硬盘上读取一个字原创 2021-01-22 10:46:17 · 86 阅读 · 0 评论 -
19-02 IO流
IO流概述:IO流用来处理设备之间的数据传输Java 对数据的操作是通过流的方式Java 用于操作流的类都在IO包中流按流向分为两种:输入流、输出流流按操作类型分为两分钟:字节流、字符流。字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的。字符流只能操作纯字符数据,比较方便。...原创 2021-01-20 20:21:03 · 77 阅读 · 0 评论 -
19-01 File类
构造方法File(String pathname); //根据一个路径得到File对象File(String parent, String child); //根据一个目录和一个子文件/目录得到File对象File(File parent, String child); //根据一个File对象和一个子文件/目录得到File对象创建方法public boolean createNewFile(); //创建文件,如果存在这样的文件,就不创建的public boolean mkdir();原创 2021-01-17 15:44:48 · 87 阅读 · 0 评论 -
18-03 自定义异常 & 异常注意事项
自定义异常为什么需要自定义异常:通过名字区分,到底是什么异常,有针对的解决办法 public class Demo6_Exception { public static void main(String[] args) throws AgeOutOfBoundsException{ Person p = new Person(); p.setAge(-7); }}class AgeOutOfBoundsException extends Exc原创 2021-01-17 11:43:58 · 196 阅读 · 0 评论 -
18-02 异常的抛出 & finally关键字
异常的抛出thorws 的方式处理异常:定义功能方法时,需要把出现的问题暴露出来让调用者去处理那么就需要通过 throws 在方法上标识编译时异常:public class Demo4_Exception { public static void main(String[] args) throws Exception{ Person p = new Person(); p.setAge(-17); System.out.println(原创 2021-01-17 11:21:13 · 143 阅读 · 0 评论 -
18-01 异常
概述异常就是 Java 程序在运行过程中出现的错误异常的继承关系:JVM 如何处理异常main 函数收到这个问题时,有两种处理方式:自己将该问题处理,然后继续运行自己没有针对的处理方式,只能交给调用 main 的JVM来处理- JVM 有一个默认的异常处理机制,就将该异常进行处理- 并将该异常的名称,异常的信息,异常出现的位置打印在控制台上,同时将程序停止运行。异常处理的两种方式1、try…catch…finallypublic class Demo1_Exception {原创 2021-01-17 10:48:32 · 89 阅读 · 0 评论 -
17-05 Java语言基础(Collections类的常用功能)
Collection集合中的常用方法public static <T> void sort(List<T> list)public static <T> int binarySearch(List<?> list, T key)public static <T> T max(Collection<?> coll)public static void reverse<List<?> list>public原创 2021-01-01 20:43:32 · 139 阅读 · 0 评论 -
17-04 Java语言基础(Hashtable)
HashtableHashMap和Hashtable的异同:共同点:底层都是哈希算法,都是双列集合区别:1、HashMap是线程不安全的,效率高 JDK1.2,Hashtable是线程安全的,效率低2、HashMap可以存储null键和null值,Hashtable不能存储null键和null值package com.xiaoxin.map;import java.util.HashMap;import java.util.Hashtable;public class Demo10_H原创 2021-01-01 15:51:53 · 100 阅读 · 2 评论 -
17-03 Java语言基础(LinkedHashMap & TreeMap)
LinkedHashMap概述:键值对怎么存的,就怎么取代码:package com.xiaoxin.map;import java.util.LinkedHashMap;public class Demo5_LinkedHashMap { public static void main(String[] args) { LinkedHashMap<String, Integer> lhm = new LinkedHashMap<>(); lhm.put("张原创 2021-01-01 14:48:47 · 163 阅读 · 0 评论 -
17-02Java语言基础(HashMap)
HashMap把Student对象作为键进行存储:Student.java:package com.xiaoxin.bean;public class Student { private String name; private int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toSt原创 2021-01-01 14:16:05 · 141 阅读 · 0 评论 -
17-01 Java语言基础(Map)
Map概述:一个接口,public interface Map<K, V>。将键映射到值的对象。一个映射不能包含重复的键,每个键至多只能映射到一个值。Map接口和Collection接口的异同:· Map是双列的,Collection是单列的· Map的键唯一,Collection的子体系Set是唯一的· Map集合的数据结构只针对键有效,跟值无关;Collection集合的数据结构针对元素有效· HashSet和HashMap底层都是Hash,只不过HashSet隐藏了值,只显示原创 2021-01-01 14:02:52 · 101 阅读 · 0 评论 -
16-05 Java语言基础(TreeSet(3))
TreeSet练习案例1:在一个集合中存储了无序且重复的字符串,定义一个方法,让其有序(字典顺序),而且还不能去除重复代码:import java.util.ArrayList;import java.util.Comparator;import java.util.List;import java.util.TreeSet;public class Demo10_TreeSet { /* * 在一个集合中存储了无序且有重复的字符串,定义一个方法,让其有序(字典顺序),而且还不能去原创 2020-12-31 12:01:08 · 92 阅读 · 0 评论 -
16-04 Java语言基础(TreeSet(2))
TreeSet比较器:在构造TreeSet类的时候,可以自定义比较器进行比较TreeSet(Compartor<? Super E> compartor)案例:按照字符串长度进行第一排序,然后再按照内容排序:import java.util.Comparator;import java.util.TreeSet;public class Demo9_TreeSet { /* * 将字符串按照长度排序 * */ @SuppressWarnings("unused")原创 2020-12-30 22:18:46 · 133 阅读 · 0 评论 -
16-03 Java语言基础(TreeSet(1))
TreeSet概述:TreeSet集合是用来对对象元素进行排序的,同样它也保证元素的唯一。TreeSet存储Integer对象:import java.util.TreeSet;public class Demo7_TreeSet { public static void main(String[] args) { TreeSet<Integer> ts = new TreeSet<>(); ts.add(3); ts.add(3); ts.add(3);原创 2020-12-30 21:56:00 · 115 阅读 · 0 评论 -
16-02 Java语言基础(LinkedHashSet)
LinkedHashSet概述:底层是链表,是Set集合中唯一一个能保证怎么存就怎么取得集合对象,因为是HashSet的子类,所以也能保证元素不重复案例演示:输出10个1~20的随机数,要求不能重复import java.util.LinkedHashSet;import java.util.Random;public class Demo4_LinkedHashSet { public static void main(String[] args) { LinkedHashSet<原创 2020-12-30 21:04:09 · 131 阅读 · 0 评论 -
16-01 Java语言基础(HashSet)
HashSet概述:此类实现Set接口,由哈希表支持。它不保证集合的迭代顺序HashSet存储字符串:import java.util.HashSet;public class Demo1_HashSet { /* * Set集合无索引,不可以重复(无序,存取顺序不一致) * * */ public static void main(String[] args) { HashSet<String> hs = new HashSet<>();原创 2020-12-30 16:23:35 · 118 阅读 · 0 评论 -
15-06 Java语言基础(可变参数 & 静态导入)
可变参数概述:定义方法的时候不知道该定义多少个参数格式:修饰符 返回值类型 方法名(数据类型 … 变量名)案例:public class Demo2_ChangeableArgs { public static void main(String[] args) { int[] arr = {11, 22, 33, 44}; print(5, arr); System.out.println("-----------"); print(55, 66, 77, 88); }原创 2020-12-29 22:19:21 · 75 阅读 · 0 评论 -
15-05 Java语言基础(三种迭代方式)
三种迭代方式的删除普通for循环public class Demo1_For {public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); //普通for循环 for(int i = 0; i &原创 2020-12-29 21:56:22 · 268 阅读 · 0 评论 -
15-04 Java语言基础(泛型Generic(2))
泛型接口概述:把泛型定义在接口上定义格式:public interface 接口名<泛型类型>案例演示:package com.xioxin.generic;public class Demo5_Generic { public static void main(String[] args) { new Demo().show("adc"); }}interface Inter<T>{ public void show(T t);}class D原创 2020-12-29 21:32:21 · 121 阅读 · 0 评论 -
15-03 Java语言基础(泛型generic(1))
泛型generic好处:1)提高安全性(将运行期的错误转移到编译器)2)省去强转的麻烦泛型的基本使用<>中放的必须是引用数据类型泛型使用注意事项前后的泛型必须一致,或者后面的泛型可以省略不写代码:import java.util.ArrayList;import java.util.Iterator;import com.xiaoxin.bean.Student;public class Demo1_Generic { @SuppressWarnin原创 2020-12-29 21:10:28 · 119 阅读 · 0 评论 -
15-02 Java语言基础(List集合之LinkedList)
LinkedListpublic void addFirst(E e)public void addLast(E e)public E getFirst()public E getLast()public E removeFirst()public E removeLast()public E get(int index)代码:import java.util.LinkedList;public class Demo3_LinkedList { @SuppressWarnings(原创 2020-12-29 20:12:42 · 90 阅读 · 0 评论 -
15-01 Java语言基础(List集合之ArrayList)
ArrayList类案例演示:去除ArrayList中重复的元素代码:import java.util.ArrayList;import java.util.Iterator;public class Demo1_ArrayList { /* * 去除ArrayList中重复元素 * * */ @SuppressWarnings("unchecked") public static void main(String[] args) { @SuppressWarning原创 2020-12-29 19:47:15 · 91 阅读 · 0 评论 -
14-04 Java语言基础(List的三个子类)
List三个子类的特点ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高。三个子类的比较Vector和ArrayList的区别:1) Vector是线程安全的,效率低2)ArrayList是线程不安全的,效率高ArrayList和LinkedList的区别1)ArrayList底层是数组结构,查询和修改原创 2020-12-29 12:43:25 · 295 阅读 · 0 评论 -
14-03 Java语言基础(List)
List集合List集合特有的方法:void add(int index, E element);E remove(int index);E get(int index);E set(int index, E element);代码:import java.util.ArrayList;import java.util.List;public class Demo1_List { @SuppressWarnings({ "rawtypes", "unchecked" }) pub原创 2020-12-29 12:27:39 · 81 阅读 · 0 评论 -
14-02 Java语言基础(Collection)
Collection概述:集合层次结构中的根接口。 集合表示一组对象,称为其元素 。 JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set和List 。 此接口通常用于传递集合并在需要最大通用性的情况下对其进行操作小案例:import java.util.ArrayList;import java.util.Collection;public class Demo2_Collection { public static void main(String[] args)原创 2020-12-28 21:47:34 · 126 阅读 · 1 评论 -
14-01 Java语言基础(集合框架)
对象数组import com.xiaoxin.bean.Student;public class Demo1_Array { public static void main(String[] args) { Student[] arr = new Student[5]; //创建引用数据类型数组 arr[0] = new Student("张三", 23); arr[1] = new Student("李四", 24); arr[2] = new Student("王五"原创 2020-12-28 19:40:52 · 100 阅读 · 0 评论 -
13-07 Java语言基础(常用工具类之Calendar类)
Calendar类概述:Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换成员方法:public static Calendar getInstance()public int get(int field)代码:import java.util.Calendar;public class Demo10_Calendar { public static void main(String[] args) {原创 2020-12-28 15:26:23 · 121 阅读 · 0 评论 -
13-06 Java语言基础(重用工具类之Date类 & SimpleDateFormat类)
Date类概述:类Date,表示特定的瞬间,精确到毫秒构造方法:public Date()public Date(long date)成员方法:public long getTime()public void setTime(long time)代码:import java.util.Date;public class Demo7_Date { public static void main(String[] args) { Date d1 = new Date();原创 2020-12-28 14:09:42 · 77 阅读 · 0 评论 -
13-05 Java语言基础(常用工具类之BigInteger类 & BigDecimal类)
BigInteger类概述:可以让超过Integer范围内的数据进行运算构造方法public BigInteger(String val)成员方法public BigInteger add(BigInteger val)public BigInteger subtract(BigInteger val)public BigInteger multiply(BigInteger val)public BigInteger divide(BigInteger val)public Big原创 2020-12-28 13:05:39 · 144 阅读 · 6 评论 -
13-04 Java语言基础(常用工具类之System)
System类概述:在System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。成员方法:public static void gc() //运行垃圾回收器public static void exit(int status) //终止当前正在执行虚拟机public static long currentTimeMillis() //返回以毫秒为单位的当前时间,1970年1月1日到现在的时间p原创 2020-12-27 22:40:32 · 325 阅读 · 4 评论 -
13-03 Java语言基础(常用工具类之Random类)
Random类概述:该类的实例用于生成伪随机数。该类在java.util包下,用的时候需要导包。如果使用相同的种子创建了两个Random实例,并且对每个实例都进行了相同的方法调用序列,则它们将生成并返回相同的数字序列。 代码:import java.util.Random;public class Demo2_Random { public static void main(String[] args) { Random r = new Random(); for(int i原创 2020-12-27 22:00:34 · 153 阅读 · 2 评论 -
13-02 Java语言基础(常用工具类之Math类)
Math类概述Math类包含用于执行基本数学运算的方法,如初等函数、对数、平方根和三角函数成员方法:public static int abs(int a)public static double ceil(double a)public static double floor(double a)public static int max(int a, int b)public static double pow(double a, double b)public static doub原创 2020-12-27 21:43:46 · 137 阅读 · 1 评论 -
12-06 Java语言基础(JDK5新特性自动装箱和拆箱 & Integer面试题)
JDK5新特性 – 自动拆箱和装箱自动装箱:把基本类型转换为包装类型自动拆箱:把包装类型转换为基本类型代码:public class Demo5_JDK { public static void main(String[] args) { Integer i = 100; //自动装箱 int z = i; //自动拆箱 System.out.println(i); System.out.println(z); }}输出:200200I原创 2020-12-25 19:24:00 · 98 阅读 · 0 评论 -
12-05 Java语言基础(基本包装类)
为什么会有基本包装类将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据基本数据类型和包装类的对应:byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean BooleanInteger类概述:1、Integer类在对象中包装了一个基本类型int的值2、该类提供了多个方法,能在原创 2020-12-25 19:00:00 · 82 阅读 · 0 评论 -
12-04 Java语言基础(Arrays类)
Arrays工具类描述:该类包含用于操作数组的各种方法(例如排序和搜索)。常用方法:public static String toString(int[] a)public static void sort(int[] a)public static int binarySearch(int[], int key)代码:package com.heima.array;import java.util.Arrays;public class Demo1_Array { public原创 2020-12-25 11:21:11 · 86 阅读 · 0 评论 -
12-03 Java语言基础(数组排序 & 二分查找)
冒泡排序思想:1、两两比较,如果前面的数比后面的数大,就交换。经过一轮后,最大的数就在最后面了。2、经过 n - 1 轮后,排序完成代码:public class Demo1_Sort { public static void main(String[] args) { //冒泡排序 int[] arr = {11, 22, 15, 9}; BubbleSort(arr); for(int a : arr) { System.out.print(a + " "); }原创 2020-12-25 10:50:37 · 119 阅读 · 0 评论 -
12-02Java语言基础(StringBuffer(2))
StringBuffer的替换和反转功能相关方法:public StringBuffer replace(int start, int end, String str); 从start到end用str替换,还是左开右闭哦poblic StringBuffer reverse(); 字符串反转代码:public class Demo4_StringBuffer { public static void main(String[] args) { StringBuffer sb = ne原创 2020-12-24 21:39:02 · 114 阅读 · 0 评论 -
12-01 Java语言基础(StringBuffer(1))
StringBuffer类通过JDK提供的API,查看StringBuffer类的说明StringBuffer是线程安全的可变字符序列StringBuffer和String的区别:-String是一个不可变的字符序列-StringBuffer是一个可变的字符序列StringBuffer类的构造方法构造方法:StringBuffer() 构造一个字符串缓冲区,其中没有字符,初始容量为16个字符StringBuffer(int capacity) 构造一个字符串缓冲区,没有字符,具有原创 2020-12-24 09:58:40 · 108 阅读 · 0 评论