java基础
Catalina_yep
这个作者很懒,什么都没留下…
展开
-
日期类---日期在控制台输出乱码怎么办
File->Settings->Build,Execution,Deployment -> Compiler -> Java Compiler设置 Additional command line parameters选项为 -encoding utf-8原创 2020-06-28 22:57:41 · 273 阅读 · 0 评论 -
日期类---Date类概述
1.Date类概述:类Date表示特定的瞬间,精确到毫秒2.构造方法:public Date()根据当前的默认毫秒值创建日期对象 Date date=new Date(); System.out.println(date); //Sun Jun 28 21:03:56 CST 2020public Date(long date) 根据给定的毫秒值创建日期对象 Date date1=new Date(1593349593L);原创 2020-06-28 21:44:23 · 261 阅读 · 0 评论 -
线程六种开启方式
一.概述在Java中负责线程的这个功能的是Java.lang.Thread 这个类特点线程具备优先级,优先级较高的线程强调cpu的机滤高一些线程分为用户线程【非守护线程】和守护线程可以创建线程后自己指定当前线程的优先级以及设定当前线程未守护线程主方法所在的线程就是主线程,由JVM创建主线程并且在主线程中调用主方法JVM同时还开启了垃圾回收线程,用户回收堆区的垃圾对象,节约内存资源多线程的启动开启多线程的好处让多个任务看起来像是"同时"执行为了防止线程阻塞 【网络请求、访问数据库原创 2020-06-12 08:50:32 · 1593 阅读 · 0 评论 -
异常---自定义异常
1.自定义异常的步骤:(1).书写自定义异常,如果是编译时异常就继承Exception,如果是运行时异常就继承RuntimeException(2)书写两个构造方法,包括一个无参的和一个带参数的构造方法//自定义一个编译时异常class ScoreException extends Exception{ private static final long serialVersionUID = -2727339925593297266L; public ScoreExceptio原创 2020-06-28 20:54:26 · 129 阅读 · 0 评论 -
异常---异常链
1.常常会在捕获一个异常后再抛出另外一个异常,并且希望把原始信息保存下来,这被称为异常链2.在JDk1.4前,程序员必须自己编写代码来保存原始异常信息3.现在所有Throwable的子类子构造器都可以接受一个cause对象作为参数,这个cause就是异常原由,代表着原始异常,即使在当前位置创建并抛出新的异常,也可以通过这个cause追踪到异常最初发生的位置4.只有Error,Exception,RuntimeException提供了带cause参数的构造器其他的所有异常只有通过initCause()原创 2020-06-28 09:03:54 · 637 阅读 · 0 评论 -
Object类中的方法---finalize
protected void finalize( )当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法,用于垃圾回收,但是什么时候回收不确定public class Pratices12 { public static void main(String[] args) throws CloneNotSupportedException { //启动垃圾回收器 System.gc(); //让垃圾回收器去调用它自己重写的fina原创 2020-06-27 16:38:26 · 123 阅读 · 0 评论 -
IO流--序列化流与反序列化流
在前面我们已经学过了字节流和字符流,知道可以把字二进制文件或者文本文件写进文件中,那我们又该如何将对象写入文件中实现持久化呢?比如我们自定义的student类,这时就要借助一个新的流,序列化流和反序列化流 ObjectOutputStream和ObjectInputStream原创 2020-06-24 09:03:22 · 141 阅读 · 0 评论 -
java基础---Compareable和Comparator的区别
1.相同点:它们两个都是接口,都可以进行排序2.不同点:(1)接口里的抽象方法不同Compareable—>int compareTo( T o );Comparator-----> int compare(T o1,T o2);(2)应用方式不同(1)如果一个类想要通过Compareable方式排序,那要求这个类必须实现Compareable接口,并重写这个类的compareTo方法,那后面不管到哪,该类的对象都可以按照这个排序规则进行排序jdk自带的类大都实现了这个接口原创 2020-07-06 20:23:40 · 864 阅读 · 0 评论 -
java基础---悲观锁和乐观锁
悲观锁:悲观锁总是假设最坏的情况,每次拿数据都认为别人会修改数据,所以要加锁,别人只能等待,直到我释放锁才能拿到锁;数据库的行锁,表锁,写锁都是这种方式,java中的synchtorized和ReentrantLock也是悲观锁的思想乐观锁:总是假设最好的情况,每次拿数据都认为别人不会修改数据,所以不会加锁,但是更新的时候,会判断在此期间有没有人修改过,一般基于版本号机制实现乐观锁适用于读多写少的情况, 即冲突很少发生,如果是多写的情况,应用会不断重试,反而会降低系统性能,这种情况最好用悲观锁,因为原创 2020-07-05 17:26:38 · 3045 阅读 · 0 评论 -
java基础----利用注解和反射把map封装成bean
利用注解可以解决属性名和map键值不匹配的问题public class mapToBean { public static void main(String[] args) { Map<String,Object> map=new HashMap<>(); map.put("empno",35232); map.put("ename","张三"); map.put("job","工作"); Em原创 2020-07-05 16:24:06 · 995 阅读 · 0 评论 -
java基础---单元测试
单元测试使用注意事项:1.必须以无参无返回值的方式声明2.方法的访问权限修饰符使用public3.测试的方法所在类的无参构造方法不能够私有4.方法名为了满足见名知意,一般叫做testXXX();原创 2020-07-05 16:22:42 · 103 阅读 · 0 评论 -
java基础---使用反射提取注解信息
注意点:必须是运行时注解1.当使用反射解析类或者接口或者枚举上的注解的时候,使用字节码文件对象来获取注解@Table(tableName = "t_emp",tableCount = 8)public class Employee { //(1)创建实体类 @primaryKey @Column(culumnName = "EMPNO",columnType =Integer.class) private Integer empno; @Column(culum原创 2020-07-05 15:03:50 · 707 阅读 · 0 评论 -
Object类中的方法---clone方法--深拷贝和浅拷贝
创建对象的方式:1.new2.clone3.反序列化4.反射原创 2020-06-27 16:20:47 · 485 阅读 · 0 评论 -
Object类中的方法---equals方法
1.观察Object中equals方法的源码 public boolean equals(Object obj) { return (this == obj); }从源码可以看得出来,默认父类Object类的equals方法底层还是跟"=="一样,比较的是地址值,而比较两个对象的地址是没有意义的,一般都是比较对象的成员是否相等.当父类方法无法满足子类需要的时候,需要重写2.子类重写父类的equals方法(1)至于怎么重写,我们可以先观察一下String类中的equals方原创 2020-06-27 15:10:34 · 293 阅读 · 0 评论 -
java基础---字符串的编码和解码
(1)对字符串进行编码方法:利用字符串的getBytes()方法,括号里可传入需要的字符集代码示例: String str="hello中国"; byte[] bytes = str.getBytes("utf-8"); System.out.println(Arrays.toString(bytes));效果:(2)对字符串进行解码String str1=new String(bytes,"utf-8"); System.out.println原创 2020-06-23 20:20:44 · 250 阅读 · 0 评论 -
Object类中的方法---toString方法
1.观察Object类的toString源码: public String toString() { return getClass().getName() + "@"+Integer.toHexString(hashCode()); }从源码可以看出,toString打印的是一个类的:类路径+@+hashcode值的十六进制2.子类重写toString方法显然,父类Object类中的toString方法不能满足子类Student类的需求,所以我们需要在子类中重写toStr原创 2020-06-27 14:30:08 · 486 阅读 · 0 评论 -
java基础---代码块的分类和应用场景
1.代码块的定义:使用{ }包裹的区域2.分类(1).局部代码块:位置:在方法内部的代码块作用:限定局部变量的作用域class CodeBlock{ public void show(){ //局部代码块 { int x=10; System.out.println(x); } { int x=20; System.out原创 2020-06-27 10:45:55 · 239 阅读 · 0 评论 -
java基础---static关键字
1.静态变量属于类的,不属于具体的对象2.访问静态成员的方式:a.通过对象访问静态成员(不建议)b.通过类访问(推荐)3.静态变量称为类变量,不使用static修饰的变量称为非静态变量4.静态既可以修饰成员变量,也可以修饰方法static修饰方法的好处:可以方便外界在不创建对象的情况下直接调用方法,执行功能使用场景:static修饰方法常用来编写工具类 Utils Objects Arrays工具类的编写步骤:a.构造方法私有b.所有成员方法添加static关键字5.静态环境下不能访原创 2020-06-27 10:24:52 · 115 阅读 · 0 评论 -
java基础---接口的特点
1.接口使用interface关键字来修饰2.接口由常量和抽象方法组成a.常量:默认接口中所有的成员变量都是省略 public static finalb.抽象方法:默认接口中所有的成员方法都是省略了public abstract3.接口不能实例化,因为接口是完全抽象的如果需要"创建"接口,那么必须使用多态父类接口指向子类的实现类4.接口的实现类使用implement关键字来完成接口的实现接口实现类的特点a.如果一个类不想要实现一个接口,那么该类也要升级为接口b.如果一个类想要实现原创 2020-06-26 14:10:24 · 228 阅读 · 0 评论 -
java基础---多态的好处和缺点
1.总结:好处:(1)简化了代码(2)提高了代码的维护性(3)提高了代码的扩展性缺点:利用多态无法访问子类所特有的方法缺点解决办法:向下转型+instanceof关键字向上转型和向下转型的概念向上转型:转型又分为向上转型和向下转型,向上转型类似于之前学基本数据类型时学过的自动类型转换,格式:<父类型><引用变量名>=new <子类型>();例如:Father fa=new Son()特点:(1)子类转为父类,父类的引用指向子类对象,类似原创 2020-06-26 10:21:14 · 537 阅读 · 0 评论 -
java基础---多态访问成员的特点
通过多态来访问类的成员:访问成员变量编译时期观察左边类型,运行时期也观察左边类型class Son extends Father{ int num=100; @Override public void show(){ System.out.println("子类"+num); }}class Father { int num =200; public void show(){ System.out.println("父原创 2020-06-25 21:43:26 · 189 阅读 · 0 评论 -
java基础---final关键字
1.常量的分类(1)字面值常量:1 2.2 false “abc” ‘a’ null(2)自定义常量:final修饰的变量2.final关键字的好处(1)成为不可以被修改的数据(2)提高程序的可读性3.特点(1)final修饰局部变量不能够被二次赋值,修饰成员变量必须直接初始化(2)final修饰方法不能够被重写(3)final修饰的类不能够被继承:例如String类和Math类...原创 2020-06-25 21:27:09 · 117 阅读 · 0 评论 -
java基础---方法的重写
**方法重写的特点:**1.发生在具有子父类两个关系的类中2.方法名称相同3.参数列表完全相同4.返回值类型可以相同也可以是其子类5.访问权限修饰符不能严于父类6.重写是多态的必要条件7.抛出的异常不能比父类的异常更大8.私有修饰的方法不能够被继承,就更不能被重写...原创 2020-06-25 20:30:42 · 138 阅读 · 0 评论 -
java基础---访问权限修饰符
Public 对所有类可见(项目可见性)Protected 对同包下以及不同包下的子类可见(子类可见性)Default默认 对同包可见(包可见性)Private 仅对本类可见 (类可见性)原创 2020-06-25 20:14:04 · 114 阅读 · 0 评论 -
java基础---break和continue以及return
1.break:(1)定义:退出switch或者循环语句块(2)特点:1)break只能放置在switch和循环体中2)break放在 单层循环:退出循环体 多层循环:退出当前层循环3)退出指定的循环体或者switch体语法:break 标签名标签名满足变量名的命名规范2.continue:(1)定义:跳过当前循环,执行下一次循环(2)特点:1)continue只能够出现在循环体中2)针对for循环来说,一旦碰到continue关键字,无论循环体下面有多少行代码都不会被执原创 2020-06-25 17:26:06 · 182 阅读 · 0 评论 -
java基础---表达式的分类和表达式的优先级
1.表达式的分类(1)按照复杂程度来分:简单表达式: 只有一个运算符的表达式 a + b , a * 6 , 4 - 3,复杂表达式: 两个或者两个以上的运算符组成的表达式 a > b && a < b,如果复杂表达式就必须要知道运算符的优先级(2)按照运算符两边的操作数来分:单目:+5双目:3+a三目:x ? y: z(3)按照名称来分:a + b 算数表达式2.运算符的优先级(1)有括号先计算括号里面的(2)单目运算符 > 双目运算符原创 2020-06-25 16:42:43 · 568 阅读 · 1 评论 -
java基础---垃圾对象
1.垃圾对象:没有引用指向堆区空间的对象成为垃圾对象2.什么情况下会成为垃圾对象?(1)匿名对象使用完毕(2)对象被赋值为null(3)对象被重新创建(4)引用所在的方法执行结束 //(1)匿名对象使用完毕 new Student("张三",12); //(2)对象被赋值为null Student s=new Student("张三",12); s=null; //(3)对象被重新创建 s=原创 2020-06-25 16:12:27 · 754 阅读 · 0 评论 -
java基础---数据类型转换
1.类型转换的依据:取决于数据的取值范围,取值范围大小如下:byte -> short -> int -> long -> float -> doublechar ->2.注意:(1)boolean类型不能够参与类型转换(2)char和byte/short只有交集关系,没有子集关系3.九种常见的数据类型转换(1)自动类型转换将小类型的数据转成大类型的数据, 系统会自动转换 //自动类型转换 float f=23; Sys原创 2020-06-25 15:07:14 · 202 阅读 · 0 评论