
java基础
一些java基础知识的学习笔记
码农の春天
这个作者很懒,什么都没留下…
展开
-
EL表达式
EL表达式EL表达式的格式是:${ } 如果是null时输出空白EL输出四大作用域的顺序时从小到大EL输出复杂的对象原创 2021-10-22 20:33:48 · 138 阅读 · 0 评论 -
稀疏数组的使用
public static void zipArrary(int[][] arrays){ System.out.println("原始数组:"+arrays.length+"*"+arrays[0].length); for (int[] ints:arrays){ for (int iint : ints){ System.out.print(iint+"\t"); } System.out.println();原创 2021-07-29 16:35:18 · 77 阅读 · 0 评论 -
注解的本质是抽象类
@Retention(value=RetentionPolicy.RUNTIME)//.CLASS(默认值)时记录在class文件中,JVM不保留//.SOURCE编译时直接丢弃这种策略的注释@Target(value= {ElementType.METHOD})//这个注解只能在方法METHOD上还有.TYPE、.FIELD等public @interface PersonInfo { String name(); int age(); String sex(); ===========原创 2021-07-13 20:15:51 · 174 阅读 · 0 评论 -
枚举的实质是什么?
/** * 性别枚举 * 注意 * (1)枚举中必须要包含枚举常量,也可以包含属性、方法、私有构造方法 * (2)枚举常量必须在前面,多个常量之间使用逗号隔开,最后分号可写可不写 * @author 作者名 * */public enum Season { SPRING,SUMMER,AUTUMN,WINTER;}使用XJad软件显示反编译.class文件public final class Season extends Enum{ public static final S原创 2021-07-13 19:34:30 · 151 阅读 · 0 评论 -
单例模式的几种写法
饿汉式/** * 饿汉式单例 * (1)首先创建一个常量 * (2)构造方法改成私有的,类外部不能创建对象 * (3)通过一个公开的方法,返回这个对象 * 优点:线程安全,缺点:声明周期太长,浪费空间 */public class SingleTon { private static final SingleTon instance=new SingleTon(); private SingleTon() {} public static SingleTon getInstance()原创 2021-07-13 19:24:38 · 71 阅读 · 0 评论 -
工厂设计模式usb案例模拟
先创建USB接口类public interface Usb { void service();}创建实现USB接口的使用类public class Mouse implements Usb{ @Override public void service() { System.out.println("鼠标开始工作了....."); }}==============================================public class KeyBoard implem原创 2021-07-13 19:14:19 · 193 阅读 · 0 评论 -
反射的常用案例
反射://-verbose:class 显示类的加载过程public class TestPerson { public static void main(String[] args) throws Exception { Person zhangsan=new Person("张三",24);// zhangsan.name="张三";// zhangsan.eat();// getClazz();// reflectOpe1();// reflectOpe2();//原创 2021-07-13 18:59:45 · 111 阅读 · 0 评论 -
文件的分割与合并,文件传输,
public class test2 { //文件的分割 //targetFile要分割的目标文件 //cutSize每个文件大小 private static void division(File targetFile,long cutSize){ if (targetFile == null)return; //计算总分割的文件数 int num=targetFile.length()%cutSize==0?(int)(ta原创 2021-05-21 21:28:52 · 145 阅读 · 0 评论 -
MD5工具使用
String password="admin123456"; try { MessageDigest md=MessageDigest.getInstance("md5"); byte[] bytes=md.digest(password.getBytes(StandardCharsets.UTF_8)); System.out.println(Arrays.toString(bytes)); S原创 2021-05-21 16:08:33 · 170 阅读 · 0 评论 -
内部类
/** *内部类: * 1.成员内部类:直接在类中定义的类 * 2.方法内部类:在一个方法中定义的类 * 方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化 * 方法的局部变量或方法的参数,内部类使用必须是常量final * 3.静态内部类:只能访问静态属性和静态成员 * 4.匿名内部类:没有名字的内部类 * 1.继承式的匿名内部类 * 2.接口式的匿名内部类 * 3.参数式的匿名内部类 *不能有构造方法;不能定义任原创 2021-05-20 15:02:44 · 68 阅读 · 0 评论 -
OO设计原则
设计原则:面向接口编程(面向抽象编程)封装变化多用组合,少用继承对修改关闭,对扩展开发原创 2021-05-20 13:54:35 · 58 阅读 · 0 评论 -
适配器模式
/** *适配器模式:将一个类的接口转换成客户希望的另外一个接口。 * 适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 */public class Test1 { public static void main(String[] args) { PowerA powerA = new PowerAimpl(); work(powerA); PowerB powerB = new PowerBimpl();原创 2021-05-20 13:47:37 · 56 阅读 · 0 评论 -
静态代理类
/** *静态代理模式 */public class Test1 { public static void main(String[] args) { Action userAction=new UserAction(); ActionProxy proxy=new ActionProxy(userAction); proxy.doAction(); }}class ActionProxy implements Action{原创 2021-05-20 13:21:17 · 82 阅读 · 0 评论 -
简单工厂模式
/** *简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 */public class Test1 { public static void main(String[] args) { //使用者和被使用者两者之间,耦合,产生了依赖,当被使用者改变时,会影响使用者 //使用工厂模式来降低两者依赖关系 Product phone= ProductFac.getProduct("phone"); if (phone !=原创 2021-05-20 13:05:29 · 64 阅读 · 0 评论 -
策略模式
/** * 策略模式,定义了一系列的算法,将每一种算法封装起来并可以相互替换使用 * 策略模式让算法独立于使用它的客户应用而独立变化。 * 把可变的行为抽象出来,这样的好处是这些行为可以在真正使用时相互替换。 */public class Test1 { public static void main(String[] args) { ISave iSave = new ISave() { @Override public v原创 2021-05-20 08:42:53 · 93 阅读 · 0 评论 -
instanceof
if(c instanceof d){ 判断c是否是d的类型}原创 2021-05-19 21:03:15 · 100 阅读 · 0 评论 -
负数的二进制表示,非运算,异或运算
负数的二进制表示:实例-7 的二进制:1111 10010000 0111反码:1111 1000补码:在反码的基础上 +1:1111 1001非运算 ~7:-87的二进制原码:0000 0111取反1变0,0变1得到负数补码:1111 1000 = -8负数二进制的逆运算补码 -1得负数的补码:1111 0111负数的补码取反得负数的绝对值:0000 1000= 8异或运算7^4=3相同为0,不同为17的二进制:0000 0111;4的二进制:0000 01007^原创 2021-05-19 09:31:14 · 1602 阅读 · 0 评论 -
JDBC
JDBC什么是JDBC:java连接数据库的规范(标准),可以使用java语言连接数据库完成CRUD操作环境搭建新建lib文件夹,存放jar包将mysql驱动mysql-connector-java-5.1.x复制到lib文件夹中。右键lib文件夹选择Add as Libraay,选择OKJDBC开发步骤注册驱动加载驱动;手动加载字节码文件到JVM中Class.forName("com.mysql.jdbc.Driver");连接数据库获取数据库连接对象URL统一原创 2021-05-10 17:24:07 · 90 阅读 · 0 评论 -
Java8新特性
Java8又称JDK1.8新特性支持Lambda表达式函数式接口新的Stream API新的日期API其他特性等Lambda表达式特殊匿名内部类,允许把函数作为一个方法的参数传递,将代码像数据一样传递基本语法:<函数式接口> <变量名> = (参数1,参数2…)->{//方法体} //Lambda表达式 Runnable runnable2=()->System.out.println("子线程执行了2.........");原创 2021-05-07 15:00:58 · 64 阅读 · 0 评论 -
反射_单例模式_注解
获取类对象 //1使用对象获取类对象 Person zhangsan=new Person(); Class<?> class1=zhangsan.getClass(); System.out.println(class1.hashCode()); //2使用类名.class属性 Class<?> class2=Person.class; System.out.println(class2.hashCode()); //3使用Class的静态方法[推荐原创 2021-05-07 13:45:01 · 125 阅读 · 0 评论 -
网络编程
网络网络模型OSI:开放式系统互联应用层、表示层、会话层、传输层、网络层、数据链路层、物理层TCP/IP模型:应用层、传输层、网络层、网络接口层TCP/UDPIP/Port端口分类:公认端口:0~1023注册端口:1024~49151动态或私有端口:49152~65535常用端口:MySql:3306Oracle:1521Tomcat:8080SMTP:25Web服务器:80FTP服务器:21InetAddress类InetAddress原创 2021-05-07 09:41:18 · 75 阅读 · 0 评论 -
IO框架
流的分类按方向:输入流,存储设备------到内存输出流,内存------存储设备按单位:字节流:以字节为单位,可以读取所有数据字符流:以字符为单位,只能读写文本数据按功能:节点流:具有实际传输数据的读写功能过滤流:在节点流的基础之上增强功能字节流字节流的父类(抽象类):InputStream:字节输入流- read()- read(byte[] )- read(byte[] int ,int )OutputStream:字节输出流- write(int )- wr原创 2021-05-06 21:00:55 · 83 阅读 · 0 评论 -
多线程
方式一: extends Thread类,覆盖run()方法,调用start()方法执行public class TestThread { public static void main(String[] args) { MyThread myThread=new MyThread(); MyThread myThread=new MyThread("可设置线程名"); myThread.setName("设置线程名"); myThread.start(); }}class MyT原创 2021-05-06 16:28:22 · 94 阅读 · 0 评论 -
异常
常见运行时异常 //1:空指针异常NullPointerException String name=null; System.out.println(name.equals("zhangsan")); //2:数组下标越界异常ArrayIndexOutOfBoundsException int[] arr= {10,30,50}; System.out.println(arr[3]); //3:未定义类异常ClassCastException Object str="hell原创 2021-05-06 11:05:20 · 84 阅读 · 0 评论 -
集合2
1.Collection工具类1:reverse(List<?>)反转集合中元素顺序2:shuffle(List<?>)随机重置集合中的元素3:sort(List)升序4.Collections.copy(dest<?>,list<?>)5.集合转数组:Integer[] arr=list.toArray(new Integer[10]);引用类型和包装类型才能转6.数组转集合List<?> list=Arrays.asList(数组原创 2021-05-06 09:49:33 · 68 阅读 · 0 评论 -
泛型
泛型1:泛型类只能使用引用类和包装类public class 名字<T>{ T t; //泛型方法 public void show (T t){ } 泛型返回值 public T getT(){ return t; }}2:泛型接口public interface 名字<T>{ T server(T t);}3:泛型方法public <T> T show( T t){ }...原创 2021-05-05 21:44:40 · 92 阅读 · 0 评论 -
集合1 List_ArrayList_Vector_LinkedList
Collection父接口一组任意对象,无序,无下标,不能重复1:创建集合Conllection collection = new ArrayList();2:添加元素collection.add( Object );collection.size( );元素个数返回int3:删除元素collection.remove( Object );4:清空collection.clear();5.遍历元素(重点)for(Object object : collection ){ sy原创 2021-05-05 21:26:46 · 79 阅读 · 0 评论 -
System类
System类1:System.arraycopy(src,srcPos,dest,destPos,length);src原数组,srcpPos开始赋值的下标,dest目标数组,destPos目标数组开始的下标位置,length复制长度2:System.currentTimeMillis()返回long类型的毫秒值3:System.gc()垃圾回收,系统自动运行4:退出jvm虚拟机System.exit(0)...原创 2021-05-05 19:39:30 · 69 阅读 · 0 评论 -
时间类
Date类1:toString()当前时间字符串2:toLocaleString()当前格式化时间字符串3:getTime()获得毫秒数4:date1.after(date2) 判断date1是否在date2之后5:date1.before(date2)判断是否在之前6:date1.compareTo(date2)比较返回±1 和07:date1.equals(date2)是否相等8:setTime()用毫秒值修改时间Canlendar类1:创建 Calendar calendar=Ca原创 2021-05-05 18:34:19 · 79 阅读 · 0 评论 -
BigDecimal 精确计算类
BigDecimal 精确计算类减法subtract()加法add()multiply()乘法divide()除法除不尽时divide( , 2,BigDecimal.ROUND_…)保留两位,四舍五入原创 2021-05-05 17:59:59 · 116 阅读 · 0 评论 -
StringBuffer和Stringbuilder
StringBuffer和StringbuilderStringBuffer 效率慢,线程安全Stringbuilder 效率快,线程不安全append()追加insert()添加replace()替换delete()删除原创 2021-05-05 14:42:18 · 58 阅读 · 0 评论 -
JDBC基础
//1.注册安装驱动 Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/myemployees"; String user="root"; String passworld="123456"; //2.连接数据库 Connection con = DriverManager.getCon...原创 2021-04-11 09:42:51 · 989 阅读 · 0 评论