Java
一些学习Java时的笔记和知识点
?JorC ?
这个作者很懒,什么都没留下…
展开
-
2021-12-12(1)
三大范式第一范式:保证每一列都不可再分第二范式:在第一范式基础上,每张表只表示一件事第三范式:满足第一第二范式,确保数据表中每一列数据都与主键直接相关,不能是间接联系规范性和性能问题: 考虑商业化的目标和需求,注重考虑性能有时故意给某些表增加一些冗余数据(可以将多表查询变为单表查询,例如:在购物车的表中加入商品的一些属性)...原创 2021-12-12 22:27:15 · 240 阅读 · 0 评论 -
2021-11-21(2)
注解(Annotation)也叫注释,一种引用数据类型,编译也是生成.class文件语法格式:[修饰符列表]@interface注解类型名{ }注解可以出现在类、属性、方法、变量,注解还可以出现在注解上Override 只能注解方法,编译器会检查是否为重写父类的方法,若不是会报错Deprecated 表示已经过时SuppressWarnings元注解 用来标注“注解类型“的注解,常用的:Target、Rete...原创 2021-11-21 22:13:03 · 191 阅读 · 0 评论 -
2021-11-21(1)
MethodgetDeclaredMethods() 获得一个Method[ ]数组,数组内容为类中所有的方法method.getReturnType().getSimpleName()method为Method类型的数据,getReturnType()可以获得方法的返回值类型,getSimpleName()可以获得简便的返回值类型名method.getParameterTypes()返回的是参数列表的形参的类型的Class[ ]数组...原创 2021-11-21 22:08:21 · 272 阅读 · 0 评论 -
2021-11-20(2)
Field(属性)getFields() 获得一个Field[ ]数组,数组内容为类中使用public修饰的属性getDeclaredFields() 获得一个Field[ ]数组,数组内容为类中所有的属性field.getType().getSimpleName()field为Field类型的数据,getType()可以获得类型但返回的是Class类型,getSimpleName()可以获得简便的属性类型Modifier.toString...原创 2021-11-20 12:50:30 · 153 阅读 · 0 评论 -
2021-11-20(1)
反射机制java.lang.reflect.*反射机制可以操作字节码文件反射机制可以操作代码片段(class文件)相关的类: java.lang.Class 代表整个字节码,一个类型。就是整个类 java.lang.reflect.Method 代表方法字节码,就是类中的方法 java.lang.reflect.Constructor 代表构造方法字节码,就是类中的构...原创 2021-11-20 12:49:02 · 186 阅读 · 0 评论 -
2021-11-18
线程池思路: 提前创建好多个线程,放进线程池中,使用时直接获取,使用完放回。可以避免频繁创建销毁,实现重复机制。优点:提高响应速率(减少使用时间)降低资源消耗(重复使用线程池中的线程,不用重新创建)便于管理线程corePoolSize:核心池大小maxmumPoolSize:最大线程数keepAliveTime:线程没有任务时多久后会停止ExecutorService:线程池接口——子类(ThreadPoolExecutor)示例代码:...原创 2021-11-18 16:32:29 · 135 阅读 · 0 评论 -
2021-11-15(2)
Lamda表达式(类型(可省略) 参数)->{实现函数式接口的方法代码块};优点:可以避免匿名内部类过多,使得代码简洁函数式接口:只有一个抽象方法的接口示例代码如下:public class LamdaTest01 { public static void main(String[] args) { ILike like= new ILike() { @Override public void l原创 2021-11-15 22:37:49 · 304 阅读 · 0 评论 -
2021-11-17
线程状态(五大状态)创建状态(new)就绪状态(start()方法)运行状态(调度)阻塞状态(sleep,wait或同步锁定)死亡状态线程的方法setPriority(int newPriority) 更改线程优先级start void sleep(long millis) 线程休眠,毫秒为单位,有异常,每个对象都有一把锁,sleep ...原创 2021-11-17 08:00:00 · 54 阅读 · 0 评论 -
2021-11-16
进程与线程一个进程可以有多个线程,如视频中有声音,图像,字幕等等线程分为用户线程和守护线程创建线程: 继承Thread类 实现Runnable接口 实现Callable接口1.继承Thread(不建议使用,Java实行单继承)自定义线程类继承Thread重写run()方法,编写线程内容创建线程对象,调用start()方法2.实现Runnable接口(推荐使用)自定义类实现Runnable接口实现run()方法,编...原创 2021-11-16 08:00:00 · 108 阅读 · 0 评论 -
2021-11-15
Hashtable(线程安全,key和value部分不可以为null)初始化容量为11,自动扩容为“2倍+1“Properties(属性类对象)Properties pro=new Properties();SetProperty() //存储元素getProperty() //获取元素load(IO流) Properties通常与IO流一起使用,可以把文件中的数据加载到集合中,使用load方法将IO流传入演示如下:FileReader...原创 2021-11-15 10:30:00 · 313 阅读 · 0 评论 -
2021-11-14
TreeMap底层数据结构是二叉树,元素无序不可重复,但可以按照元素大小自动排序。对于自定义的对象,必须指定排序规则:java.lang.ClassCastException //出现这个异常说明没有实现Comparable1.实现Comparable接口,重写compareTo方法,编写排序规则。2.实现比较器的方式:新建一个类来实现util包下的Comparator接口,并重写方法compare,在主方法new对象时,还得new一个比较器传入集合。如下: Tr...原创 2021-11-14 12:00:00 · 178 阅读 · 0 评论 -
2021-11-13
HashMap(非线程安全,key和value部分可以为null)HashMap的默认初始容量是16,默认加载因子为0.75,自动扩容为原来的二倍。(默认加载因子是底层数组容量达到75%的时候,会自动扩容)(HashMap集合的初始化容量必需是2的倍数)哈希表是数组和单向链表的结合体,充分发挥了数组和链表各自的优点。HashMap底层其实是一个Node<K,V>[ ]数组,Node<K,V>是一个静态内部类,里面有四个属性:哈希值hash,K,V,下一个节点的内存地.原创 2021-11-13 23:20:55 · 510 阅读 · 0 评论 -
2021-11-11
Map集合Map集合以key和value的键值对的方式存储元素key和value都是存储对象的内存地址(key为主导,value为附属)Map的常用方法V put(K key,V value) 添加键值对V get(Object key) 通过key获得valuevoid clear() 清空Map集合Boolean containsKey(Object key) 判断是否存在keyBoolean contain...原创 2021-11-11 20:00:00 · 169 阅读 · 0 评论 -
2021-11-10
泛型机制使用泛型来指定集合中元素的类型使用泛型List<Double>后,集合只能存储Double类型的数据JDK8之后,引入了自动类型推断(又称钻石表达式)List<Animal> mylist=new ArrayList<>();ArrayList<>()-----尖括号不用写类型自定义泛型代码中的泛型“abcdef”可以随便命名(只是个标识符而已),一般情况自定义泛型写“E”或“T”“E”指element原创 2021-11-10 20:00:00 · 44 阅读 · 0 评论 -
2021-11-09
List接口List集合特点:有序(有下标)可重复,可以通过下标遍历(循环)。List接口特有、常用方法:add(int index,Object o) //向集合指定位置添加元素,效率较低get(int index) //通过下标获取元素indexOf(Object o) //获取指定对象第一次出现的索引lastIndexOf(Object o) //获取指定对象最后一次出现的索引remove(int index) /...原创 2021-11-09 23:02:02 · 353 阅读 · 0 评论 -
2021-11-08
Iterator(迭代器)注意:迭代器最初并没有指向第一个元素。存进去什么类型,取出来就是什么类型。迭代器得在加入元素之后编写(否则迭代器为空)。集合结构发生改变,迭代器必须重新获取(否则会出现异常)。hasNext() //返回true表示还有元素可以迭代,false则表示没有元素可以迭代了next() //让迭代器前进一位,并将指向的元素返回remove() //会更新迭代器,这样就不会报错使用迭代器删除元素,代码如下:public static ...原创 2021-11-08 10:00:00 · 60 阅读 · 0 评论 -
2021-11-07
Collection的contains()public static void main(String[] args) { Collection c=new ArrayList(); String s2=new String("def"); c.add(s2); String s1=new String("abc"); c.add(s1); System.out.println(c.size()); String x=new String("ab...原创 2021-11-07 10:00:00 · 51 阅读 · 0 评论 -
2021-11-06
Collection的常用方法首先,没有使用“泛型”之前,Collection可以存储Object所有的子类型。使用“泛型”之后只能存储某个具体类型。(集合中不能直接存储基本数据类型,也不能存Java对象,只是存储Java对象的内存地址)add(Object e) //向集合中添加元素size() //获取集合中元素的个数clear() //清空集合contains(Object e) //判断集合是否包含元素remove(Object e) //删除集合中某个元...原创 2021-11-06 10:00:00 · 48 阅读 · 0 评论 -
2021-11-05
Map集合HashMapHashtablePropertiesTreeMapMap集合的继承结构图原创 2021-11-05 10:00:00 · 50 阅读 · 0 评论 -
2021-11-04
集合Collection和iteratorListSet集合继承结构图原创 2021-11-04 21:25:35 · 78 阅读 · 0 评论 -
2021-11-03
File类常用的方法exists() //判断文件是否存在creatNewFile() //创建file文件mkdir() //创建一层目录mkdirs() //创建多层目录getParent() //获得父路径getAbsolutePath() //获得绝对路径delete() //删除文件getName() //获取文件名isDirectory() //判断是否为目录(文件夹)isFile() //判断是否为文件lastModified...原创 2021-11-03 10:00:00 · 54 阅读 · 0 评论 -
2021-11-02
序列化与反序列化序列化:Serialize java对象存储到文件中,将java对象的状态保存下来的过程 反序列化:DeSerialize 将硬盘上的数据重新恢复到内存中,恢复成Java对象 参与序列化与反序列化的对象,必须实现Serializable接口,这个接口什么代码都没有,起标识作用,Java虚拟机看到serializable会为该类自动生成一个序列化版本号。 transient 关键字表示游离,不参与序列化(修饰属性时) 序列化版本号的作用:假如两个人各编写了一个...原创 2021-11-02 21:03:26 · 68 阅读 · 0 评论 -
2021-11-01
FileInputStream的特殊方法1.available()返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,可以用此方法来计算文件长度用来规定byte[]的长度,这样就不用循环只需运行一次注意:这个方式不太适合太大的文件,因为byte[]的长度不能太长2.skip(long n)跳过并从输入流中丢弃n个字节的数据。可以用来读取特殊的文件跳过一定的字节归类不同类型的数据等等,可以提高效率。FileOutputStream的特殊方法1.FileOutputStream(原创 2021-11-01 20:00:00 · 303 阅读 · 0 评论 -
2021-10-31
16个重点IO流 文件专属 java.io.FileInputStream java.io.FileOutputStream java.io.FileReader java.io.FileWriter 转换流(将字节流转换成字符流) java.io.InputStreamReader java...原创 2021-10-31 21:06:01 · 50 阅读 · 0 评论 -
2021-09-12
接口(interface)接口定义(1)接口就是纯抽象类,用interface定义public interface A(2)所有的函数都是抽象函数(3)所有的成员变量都由public static final修饰,即所有的成员变量都是常量2. 实现接口(1)类用extends,接口用implements(接口可连接多个),接口可以继承接口但不能继承类,而且接口不能实现接口类实现两个接口并继承另一个类:public class AA extends BB implements Clon原创 2021-09-12 11:56:07 · 55 阅读 · 0 评论 -
2021-09-07
抽象类定义:一个用abstract修饰的类,一般是作为父类被继承,若抽象类中有抽象方法,则需要将方法重写。抽象类的特点及用法(1)抽象类定义,通常是范围+abstract+class+类名,如下:public abstract class Test(){}(2)抽象方法的定义,范围+abstract+返回值+方法名+ “;”,如下:public abstract void getArea();或abstract public int getArea();(3)抽象类不能使用ne原创 2021-09-07 21:53:18 · 41 阅读 · 0 评论 -
2021-09-06
String,StringBuffer和StringBuilderString类String是字符串常量,是不可变的对象,因此String消耗内存极大。举个例子:想要将两个字符串组合成一个,例如创建一个字符串String s=“hello"与另一个"world”,在这里字符串s和"world"各占一个空间内存,通过s+="world"这个运算后会得到s=“helloworld"的字符串,但是这个字符串是在内存中重新创建一个空间保存下来的,而不是在原有的基础上加上"world”,所以这里我们就用了3个存原创 2021-09-06 10:35:48 · 89 阅读 · 0 评论 -
2021-10-25
I/O流的分类以输入输出分类以操作单元分类原创 2021-10-25 22:25:35 · 63 阅读 · 0 评论