JAVA基础
yipfang
这个作者很懒,什么都没留下…
展开
-
学习笔记:注解、反射、内省
内置注解:@Override:重写,用于检查代码格式@Deprecated:废弃。调用时可以显示注释(建议其他方法)@FunctionalInterface:函数式接口@SuppressWarnings:忽略警告信息元注解:作用在其他注解的注解 @Retention:标示注解的持久策略,1、只在代码中,2、编入class,3、RUNTIME @Documented:标示注解是否包含在用户文档中 @Target:标注注解应用在哪些Ja...原创 2021-08-18 15:54:48 · 97 阅读 · 0 评论 -
学习笔记:枚举
定义格式:权限修饰符 enum 枚举名称 { 实例1,实例2,实例3,实例4; }public enum Level { LOW(30), MEDIUM(15), HIGH(7), URGENT(1); private int levelValue; private Level(int levelValue) { this.levelValue = levelVal...原创 2021-08-17 23:47:08 · 51 阅读 · 0 评论 -
学习笔记:URL
URL编码:在 java 开发中,有时候需要将中文进行转码,保证传输的时候不出现乱码;最常用的方式是 URLEncode 与 URLDecode URLEncode 将普通字符串转换成 application/x-www-from-urlencoded 字符串 示例://字符串中的非西欧字符的内容,会被转化成%XX%XX XX 为十六进制的数字 String urlString = URLEncoder.encode("你好", "UTF-8"); System.out.pr原创 2021-08-17 11:58:45 · 430 阅读 · 0 评论 -
学习笔记:XML和JSON
XML文档组成:声明:<?xml version="1.0" endcoding="UTF-8"?>标记(元素、标签、节点): 开始标记(开放标记):<标记名称> 结束标记(闭合标记):</标记名称> 标记内容:开始标记和结束标记中间 标记的属性:在开始标记中的键值对,必须被引号引住 注释:不能写在声明前,不能嵌套。<!-- 注释 -->...原创 2021-08-16 21:07:41 · 55 阅读 · 0 评论 -
学习笔记:TCP网络编程
Socket类:套接服务ServerSocket:搭建服务器new ServerSocket(intport}; //构造方法,端口号的范围 0-65535 Socketaccept(); //方法,等待客户端连接,线程阻塞直到新的客户端连接成功Socket:连接服务器,是网络驱动提供给程序的一种借口Socket(String ip,int port); //构造方法OutputStream getOutputStream();...原创 2021-08-14 02:52:39 · 104 阅读 · 0 评论 -
学习笔记:Lambda
函数式编程思想(int x,int y)- > { returnx+y;} -> 表示匿名的方法简写:参数只有一个可以省略小括号。代码段只有一行可以省略大括号和return原创 2021-08-12 22:28:01 · 39 阅读 · 0 评论 -
学习笔记:带返回值的线程Callable
方法:task.done();激活唤醒 task.isDone();判断是否激活 task.get(); 获取返回值task.toString();打印当前FrtureTask\task.cancel(); 取消原创 2021-08-12 21:34:54 · 130 阅读 · 0 评论 -
学习笔记:线程安全、线程池
一、synchronized(Object o){ } //线程锁,不能在run方法内部new Object()二、synchronized作为方法的修饰符。非静态方法synchronized锁住的对象是this,静态方法synchronized锁住的对象是class三、创建锁类的对象:Lock l =new ReentrantLock(); l.lock(); l.unlock();\ 公平锁和非公平锁:java默认非公平锁。...原创 2021-08-12 21:08:37 · 64 阅读 · 0 评论 -
学习笔记:多线程Thread和Runnable
同步:排队执行,效率低但安全异步:同时执行,效率高但数据不安全线程阻塞:所有耗时操作Thread:new Thread (Runnable target,String name); //参数:任务,线程名称线程类,继承Thread类重写run(),通过start()方法启动。每个线程都有自己的栈空间,共用一份堆内存。优点:简单方便,可以匿名内部类方法:void start()使该线程开始执行;Java虚拟机调用该线程的run方法...原创 2021-08-12 00:54:32 · 153 阅读 · 0 评论 -
学习笔记:序列化和反序列化
被序列化的类要继承 Serializable接口,关键字transient 、static修饰的属性不被序列化new ObjectOutputStream(FileOutputStream fos).writeObject(Object o); //序列化new ObjectInputStream (FileInputStream fis).readObject(Object o); //反序列化try - with - resources语句:自动关闭资...原创 2021-08-11 20:38:25 · 38 阅读 · 0 评论 -
学习笔记:IO流
构造输出流的boolean参数,boolean append,true为append,false为覆盖构造参数可以是 File 或 文件名字符串字符流:InputStream、OutputStream文件输入输出流:FileOutputStreamint read()方法返回下一字节(int 0~255),到末尾返回-1int read(byte[] b),int read(byte[] b, int off, int len),返回读到的长度,-1表示读到了末尾v...原创 2021-08-11 20:16:45 · 75 阅读 · 0 评论 -
学习笔记:File
System.in 是 InputStream 类的一个对象,System.out 和 System.error 是 PrintStream 类的对象java.io.FileFile 类提供了如下三种形式构造方法。File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。 File(String path, String name):path 是路径名,name 是文件名。 File(F原创 2021-08-11 17:30:14 · 45 阅读 · 0 评论 -
学习笔记:哈希表
Object.hashCode是intHashMap 初始16个哈希桶,哈希值%16的值作为下标,相同下标的元素存在同一个哈希桶每个哈希桶初始结构为链表,当元素超过8个转为红黑树,当元素减少到6再转回链表加减因子0.75:当集合里的空桶少于0.25,哈希桶数量加倍(二进制左移1)不要乱改哈希表的键!!!当哈希表的键是自定义的引用类型,不能对这个对象修改,会导致哈希表的错乱(因为哈希值被变了)...原创 2021-08-07 20:44:53 · 67 阅读 · 0 评论 -
学习笔记:Map
Map集合存储的是一个个的键值对数据HashMap、TreeMap、LinkedMapMap集合的键不可重复HashMap只存键,值为统一===> HashSetTreeMap只存键,值为统一===> TreeSet方法名称 说明 void clear() 删除该 Map 对象中的所有 key-value 对。 boolean containsKey(Object key) 查询 Map 中是否包含指定的 key,如果包含则返回 tr...原创 2021-08-07 17:26:19 · 61 阅读 · 0 评论 -
学习笔记:Comparable、Comparator 比较器
Comparable在编写类的时候实现这个结构,并重写compareTo方法Comparator在使用Collections.sort(List list,Comparetor c)方法时,建立Comparetor对象,并重写compare方法java.lang.Comparable 接口:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo方法被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码。实现...原创 2021-08-07 15:22:39 · 63 阅读 · 0 评论 -
学习笔记:单列集合,Collection、list 和 set接口
常见数据结构:栈(stack)、队列(queue)、数组(Array)、链表(linkedlist)、红黑树(binarytree)红黑树的约束: 1. 节点可以是红色的或者黑色的 2. 根节点是黑色的 3. 叶子节点(特指空节点)是黑色的 4. 每个红色节点的子节点都是黑色的 5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同Collection接口:单列集合抽象方法:boolean add(E e) 向集合中添加一个元素,如果集合对象被...原创 2021-08-07 14:50:52 · 104 阅读 · 0 评论 -
学习笔记:链表、二叉树
链表 链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时i动 态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的 指针域。我们常说的链表结构有单向链表与双向链表数组的优点: 存取速度快 数组的缺点: 事先必须知道数组的长度 插入删除元素很慢 空间通常是有限制的 需要大块连续的内存块 插入删除元素的效率很低链表优点: 空间没有限制 插入删除元素很快 ...原创 2021-08-06 22:10:29 · 82 阅读 · 0 评论 -
面向对象练习:快递柜代码
先看结构:主程序 Express_3_6package cloud.windinfo.demo.express_3_6;import cloud.windinfo.demo.express_3_6.bean.Express;import cloud.windinfo.demo.express_3_6.dao.ExpressDao;import cloud.windinfo.demo.express_3_6.view.View;public class Express_3_.原创 2021-08-06 10:54:03 · 744 阅读 · 0 评论 -
学习笔记: java.lang.String
1. 字符串不变:字符串的值在创建后不能被更改2. 因为String对象是不可变的,所以它们可以被共享。相同字符串地址一样,除非String是new创建的。字符串常量池位于方法区3. "abc" 等效于 char[] data={ 'a' , 'b' , 'c' } 4.字符串拼接产生内存垃圾,大量字符串拼接采用stringbuffer(线程安全)和stringbuilder(线程不安全)。常用的 append方法,toString方法构造方法:public S原创 2021-08-06 00:46:39 · 248 阅读 · 0 评论 -
学习笔记:Date、DateFormat、Calendar
Date类表示特定的时刻,精度为毫秒Date 类有如下两个构造方法。Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。 Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date 指定的毫秒数。Date date1 = new Date(); // 调用无参数构造函数System.out.println原创 2021-08-05 21:36:25 · 92 阅读 · 0 评论 -
学习笔记:java.math.BigDecimal
精确计算BigDecimal b1 = new BigDecimal(0.1);BigDecimal b1 = new BigDecimal(0.2);BigDecimal b3 = b1.add(b2);原创 2021-08-05 21:04:22 · 53 阅读 · 0 评论 -
学习笔记:java.lang.Arrays
操作数组的方法lang包不用导包所有方法都是static1)int binarySearch(type[] a, type key)使用二分法查询 key 元素值在 a 数组中出现的索引,如果 a 数组不包含 key 元素值,则返回负数。调用该方法时要求数组中元素己经按升序排列,这样才能得到正确结果。2)int binarySearch(type[] a, int fromIndex, int toIndex, type key)这个方法与前一个方法类似,但它只搜索 a 数原创 2021-08-05 20:58:00 · 142 阅读 · 0 评论 -
学习笔记:java.lang.Math
public static double abs (double a) :返回 double 值的绝对值。public static double ceil (double a) :返回大于等于参数的最小的整数。凑整public static double floor (double a) :返回小于等于参数最大的整数。取整public static long round (double a) :返回最接近参数的 long。四舍五入...原创 2021-08-05 20:05:36 · 56 阅读 · 0 评论 -
学习笔记:java.util.Objects
Object类:这个类是所有类的父类Objects类:这是一个工具类,所有方法都是static方法,用来操作对象或在操作前检查某些条件Objects继承 Object类,是final的,不能被继承hashCode、equals、toString 、compare 方法equals:两个对象的相等equals是一个static的方法,返回的值是两个函数是否相等的真值。满足真值需要两个条件之一:1.两个变量引用了相同的对象2.如果a非空,则通过其equals(b)方法返回判定值...原创 2021-08-05 19:14:33 · 107 阅读 · 0 评论 -
学习笔记:泛型
泛型:定义函数的时候不指定参数的类型,将类型作为变量参数(参数化的类型),在使用或调用的时候传入具体类型(类型实参)泛型的使用:泛型类泛型接口泛型方法private static <T> T 方法名(T a, T b) {} 例:public static <A> void print(A a){ // <A> 泛型 System.out.ptintln(a) }调...原创 2021-08-05 17:18:41 · 52 阅读 · 0 评论 -
学习笔记:编程思路
模块分析:MVC1、V视图展示(欢迎、菜单、子菜单。。。)2、M模组 D数据存取(快递数据)3、C调度逻辑(根据视图接收到的用户输入内容,调度数据存取)封装:(bean)无参构造方法,私有属性,gettersetter ,可复用数据存储对象:(DAO) DataAccessobjects,指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。...原创 2021-08-04 01:11:39 · 55 阅读 · 0 评论 -
学习笔记:异常
异常:受检异常和非受检异常运行时异常:RuntimeException——不飘红的异常。多态方式处理异常所有异常的父类:Exceptiontry{// 有可能发生异常的代码段 }catch(异常类型1 对象名1){ // 异常的处理操作 }catch(异常类型2 对象名2){// 异常的处理操作 } ... finally{ // 异常的统一出口 (必须要擦的屁股放在这)}...原创 2021-08-03 18:11:21 · 35 阅读 · 0 评论 -
学习笔记:递归
递归:在方法中调用自身。求n!重点:能用循环解决的问题不用递归!!原创 2021-08-01 12:43:20 · 59 阅读 · 0 评论 -
学习笔记:object类、内部类包装类
Object类:最高父类,默认父类Object类的多态:所有对象都是Object类,可接收任意数据类型。toString方法:默认输出地址。建议重写Object中的toString方法。 此方法的作用:返回对象的字符串表示形式。 Object的toString方法, 返回对象的内存地址equals方法:默认比较地址。此方法的作用:指示某个其他对象是否“等于”此对象。内部类:在一个类内部定义另一个类成员内部类、局部内部类、匿名内部类、静态内部类...原创 2021-08-01 12:32:37 · 73 阅读 · 0 评论 -
学习笔记:面向对象继承和多态
继承的格式:class子类extends 父类{} //一个子类只能有一个父类super关键字:指向父类,调用父类构造方法,访问父类属性,访问父类方法。条用super构造方法的代码必须在子类构造方法的第一行。重写(Override):子类对父类方法体的重写1、参数列表必须与被重写的方法完全相同2、返回类型必须与被重写方法相同3、访问权限不能比被重写方法访问权限更低4、父类方法只能被它的子类方法重写5、声明为static和private的方法不能被重写,...原创 2021-07-31 18:46:06 · 58 阅读 · 0 评论 -
学习笔记:面向对象基础
面向对象思想从概念上讲分为以下三种:OOA、OOD、OOP OOA:面向对象分析(Object Oriented Analysis) OOD:面向对象设计(Object Oriented Design) OOP:面向对象程序(Object Oriented Programming 三大特征:封装性:所有的内容对外部不可见 继承性:将其他的功能继承下来继续发展 多态性:方法的重载本身就是一个多态性的体现类是综合的特征,对象时实现这些特征的具体产物。类由属性和方法组成。原创 2021-07-28 21:11:32 · 39 阅读 · 0 评论 -
学习笔记:数组
创建:格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度]; 格式 2. 数据类型[] 数组名称 = { 数组内容 1,数组内容 2,数组内容 3...数组内容 n }; 格式 3. 数据类型[] 数组名称; 属于只创建了数组引用名, 并未在内存创建数组空间。 格式 4. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3...内容 n};#已经创建的数组不能再用格式2赋值下标:0~a...原创 2021-07-25 22:47:53 · 38 阅读 · 0 评论 -
学习笔记:判断用户输入类型
Scanner input = new Scanner(System.in);System.out.println("请输入一个整数:");//执行到这里,用户开始输入//接收输入前,先判断用户的输入类型是否为intif(input.hasNextInt()){ //其他:input.hasNextString()方法等。 int num = input.nextInt(); System.out.println("你输入的是:"+num);...原创 2021-07-23 22:39:22 · 408 阅读 · 0 评论 -
学习笔记:程序执行结构
分支结构:一、if条件语句if(条件语句){…} if (条件语句){…}else{…} if (条件语句){…}else if(条件语句){…} if (条件语句){…}else if(条件语句){…}else{…} 二、switch语句switch(表达式){ case 取值 1: 语句块 1;break; case 取值 n: 语句块 n;break; defa...原创 2021-07-23 22:32:30 · 53 阅读 · 0 评论 -
学习笔记:接受用户输入
包:import java.util.Scanner;Scanner input = new Scanner(System.in); int i =input.nextInt(); //只能输入int类型 String str1 = input.next(); //接收一个word,有效字符前的空格不记录。空格和回车都结束String str2= input.nextLine(); ...原创 2021-07-23 21:44:17 · 59 阅读 · 0 评论 -
学习笔记:转义字符
制表符的使用:原创 2021-07-23 21:34:31 · 44 阅读 · 0 评论 -
学习笔记:命名规范
不能以_$开头和结尾不能数字开头区分大小写类名(class)首字母大写,后面每个单词首字母大写(大驼峰)方法名首字母小写,后面每个单词首字母大写(小驼峰)变量名全部小写,单词中间可以加_常量名全部大写力求表达清楚,不嫌长!!!...原创 2021-07-23 21:34:47 · 157 阅读 · 0 评论 -
学习笔记:变量作用域
变量只在被定义的结构定义语句内部起作用,即{ }内部,超出{ }以后被垃圾回收期(GC)回收。{int a =10;}{System.out.println(a); //a不存在}静态方法对成员变量的调用:成员变量必须是静态的public class Demo1;static int a = 10; public static void main(String[ ] args){ a= 2...原创 2021-07-23 21:34:05 · 38 阅读 · 0 评论 -
学习笔记:JAVA运算符
算术运算符:赋值运算符:关系运算符:逻辑运算符:字符串连接运算符:String s="He" + "llo"; // "Hello"String s="x" + 123; //"x123"String s=""+123; // int类型强制转换为String类型三目运算符:X ? Y : Z X 为 boolean 类型表达式,先计算 x 的值,若为 true,整个三目运算的结果为表达式 y 的值,否则整个运算结果为...原创 2021-07-22 22:51:43 · 69 阅读 · 0 评论 -
方法的使用
方法的要素:权限修饰符、方法名、参数列表和返回值格式:权限修饰符返回值类型声明方法名称(参数,参数,参数。。。){ 方法中封装的逻辑功能; return返回值;}权限修饰符:返回值:方法在声明时必须指定返回值的类型。 通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。 如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。...原创 2021-07-22 22:32:18 · 57 阅读 · 0 评论