
学习Java
真的那么难吗?
这个作者很懒,什么都没留下…
展开
-
C语言和JAVA的区别
java语言和c语言的区别:un 公司推出的Java 是面向对象程序设计语言,其适用于Internet 应用的开发,称为网络时代重要的语言之一。Java 可以用认为是C 的衍生语言,与C 在大量元以内成分保持相同,例如此法结构、表达式语句、运算符等与C基本一致:但Java更简洁,没有C中冗余以及容易引起异常的功能成分,并且增加了多线程、异常处理、网络编程等方面的支持功能。本文从多角度对Java与C进行对比分析,为C与Java语言的学习提高一些借鉴。1、调法结构 C与Java的词法结构很相似,针对程原创 2020-10-13 23:16:42 · 3259 阅读 · 0 评论 -
drop、truncate、delete的区别
drop,truncate,delete区别1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。 drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。 注意:trun原创 2020-10-13 15:05:15 · 474 阅读 · 0 评论 -
IDEA快捷键(持续学习ing)
最常见的:Ctrl+Z:撤销Ctrl+Shift+Z:重做Ctrl+X:剪贴Ctrl+C:复制Ctrl+V:粘贴Ctrl+Y:删除当前行比较实用的:Ctrl+Shift+=:展开所有代码Ctrl+Shift±:收缩所有代码Ctrl+Shift+F:在全局文件中查找字符串Ctrl+Shift+R:在全局中替换字符串Alt+F7:查找当前变量的使用,并列表显示 需要选中Ctrl+Alt+F7:查找当前变量的使用,并直接对话框提示Ctrl+F7:在文件中查找符号的使用Ctrl原创 2020-10-12 23:13:59 · 142 阅读 · 0 评论 -
单例模式
概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,本文主要介绍:懒汉式单例、饿汉式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一转载 2020-09-07 20:17:26 · 115 阅读 · 0 评论 -
反射2_使用ClassLoader加载配置文件
首先有两个配置文件:jdbc在Reflection的Module目录下,jdbc1在src目录下首先实例化Properties第一种方式,文件流的方式jdbc内容 输出:第二种方式:使用ClassLoaderjdbc1的内容:输出:原创 2020-08-26 17:18:27 · 279 阅读 · 0 评论 -
反射1_Class实例
* 关于java.lang.Class的理解 * 1.类的加载过程: * 程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾),接着使用java.exe命令对某个字节码文件 * 进行解释运行。相当于将某个字节码文件加载到内存中。此过程就称为类的加载。加载到内存中的类就称为运行时类,此运行时类 * 就作为Class的一个实例。 * * 2.换句话说,Class的实例就对应着一个运行时类 * * 3.加载到内存中的运行时类,会缓存一定的时间,在此时间之内,我们可以.原创 2020-08-26 10:56:14 · 169 阅读 · 0 评论 -
对象的序列化和反序列化
序列化:把对象转换成字节序列的过程叫做序列化反序列化:把字节序列转换为对象的过程叫做反序列化Java序列化对象的方式:1:Java序列化的默认API 通过java.io.ObjectOutputStream对象输出流的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。 通过java.io.ObjectInputStream对象输入流的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并原创 2020-08-25 20:15:02 · 215 阅读 · 0 评论 -
IO相关概述
一、流的三种分类:1.根据流向分为:输入流、输出流2.根据数据单位分为:字节流和字符流3.根据实现的功能分为:节点流和处理流二、什么是节点流,什么是处理流,各有什么好处,处理流的创建有什么特征?节点流是直接连接数据和程序的流,用于输入和输出处理流是在节点流的基础上实现功能扩展的流。处理流的构造器一定有节点流的子类三、4个IO抽象基类、4个文件流、4个缓冲流抽象基类:InputStream、OutputStream Reader、Writer文件流:FileInputStream File原创 2020-08-23 17:59:05 · 135 阅读 · 0 评论 -
IO流基本操作
一、流的分类:1.操作数据单位:字节流、字符流2.数据的流向:输入流、输出流3.流的角色:节点流和处理流二、流的体系结构抽象基类 节点流(文件流) 缓冲流(处理流的一种)InputStream FileInputStream BufferedInputStreamOutputStream FileOutputStream .原创 2020-08-20 20:13:25 · 111 阅读 · 0 评论 -
通配符的使用、读取和写入
一、概念:通配符的使用通配符: ?类A是类B的父类,G和G是没有关系的,他们共同的父类是G<?>添加(写的过程):对于List<?>就不能向其内部添加数据获取:(读的过程)输出结果:通过test5可以知道。G<?extend A>代表了 小于等于A的范围,简而言之就是说,extend是继承的意思,因此该是A类和A类的子类G<?super A>代表了大于等于的意思,它代表A类和A类的父类...原创 2020-08-19 16:42:03 · 241 阅读 · 0 评论 -
泛型在继承方面的体现和注意点
泛型在继承方面的体现:Object是String的父类,子类对象可以赋值给父类对象数组也同理,Object和String是继承关系但是带泛型的集合方面有一些注意点:虽然类A是类B的一个父类,但是G和G二者不具备子父类关系,二者是并列关系补充:类A是类B的父类,A是B的父类第一种情况:第二种情况:在这种情况下,show1和show的泛型类型是子父类的关系,但是他们之间并不构成子父类,是完全不同的两个方法。 因此报错。...原创 2020-08-19 15:09:45 · 290 阅读 · 0 评论 -
定义泛型结构:泛型类、泛型接口、泛型方法
如果定义了泛型类,在实例化时没有指明泛型,则认为此泛型类型是Object类型要求:如果大家定义了类是带泛型的,建议在实例化时要指明类的泛型建议:实例化时指明类的泛型由于子类在继承带泛型的父类时,指明了泛型的类型,则实例化子类对象时,不在需要指明泛型泛型不同的引用不可以相互赋值list1=list2;即使泛型有两个类型,但是在运行的时候,只有一个类型加载到Jvm中自定义泛型类、方法...原创 2020-08-19 14:22:48 · 256 阅读 · 0 评论 -
泛型概念及示例
泛型的使用:1.jdk5.0的新特性2.在集合中使用泛型:总结:①集合接口或集合类在jdk5.0时候都修改为带泛型的②在实例化集合时,可以指定泛型的类型③指明完以后,在集合类或者接口中,凡是定义类或者接口时 ,内部结构(比如,方法,构造器,属性)使用到类的泛型的位置,都指定为实例化时的泛型 比如add(E e)-->实例化以后,add(Integer e)④注意点:泛型的类型必须是类,不能是基本数据类型,需要用到基本数据类型的位置,拿到⑤如果实例化时,没有指明泛型的类型,默认原创 2020-08-19 14:18:07 · 224 阅读 · 0 评论 -
方法重载和方法覆盖(重写)的区别:
方法重载和重写是不同的概念,主要有以下区别:1、首先是含义不同1)方法重载是在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法,与参数列表的数量、类型和顺序有关,与修饰符和返回值类型以及抛出异常类型无关2)方法重写(方法覆盖)的前提是发生在具有继承关系的两个类之间,方法重写有以下规则:a.参数列表必须保持一致b.返回值类型必须保持一致c.方法名必须保持一致d.重写方法的访问权限范围必须大于等于父类方法e.重写方法的抛出异常类型范围不能大于父类方法2、方法的重载和重写的作用不同重原创 2020-08-19 09:51:29 · 7448 阅读 · 0 评论 -
HashMap常见问题
https://www.cnblogs.com/zengcongcong/p/11295349.html原创 2020-08-18 20:34:43 · 177 阅读 · 0 评论 -
Map的遍历操作
遍历所有key集:keySet()遍历所有value() :values();遍历所有key-value :entrySet()常用方法:添加:put(Object key,Object value)删除:remove(Object key)修改:put(Object key,Object value)查询:get(Object key)长度:size()遍历:keySet() Values() entrySet()...原创 2020-08-17 20:13:34 · 143 阅读 · 0 评论 -
Map简单分类及梳理
一、Map分类:/—Map:双列数据,存储Key-Value对的数据 —类似于高中的函数:y=f(x) /---HashMap:作为Map的主要实现类 线程不安全,效率高 可以存储null的key和value LinkedHashMap:保证遍历Map元素时,可以按照添加的顺序,实现遍历 原因:在原有的HashMap的基础上,添加了一对指针,指向前一个和后一个元素原创 2020-08-17 16:20:00 · 1046 阅读 · 0 评论 -
HashSet、LinkedHashSet、TreeSet
Collection下的Set接口分为HashSet、LinkedHashSet、TreeSet:HashSet:作为Set接口的主要实现类:线程是不安全的:可以存储null值LinkedHashSet:作为HashSet的子类,遍历其内部数据时,可以按照添加的顺序遍历TreeSet:可以按照添加对象的指定属性,进行排序。使用:需要快速访问时,使用HashSet;需要一个排序的Set,使用TreeSet;需要一个需要记录插入顺序的的Set,使用LinkedHashSet对于Set接口来说:他所记录原创 2020-08-15 21:18:47 · 262 阅读 · 0 评论 -
Set无序性、不可重复性、HashSet的添加过程
1.Set接口的框架:Collection接口:单列集合,用来存储一个一个的对象 set接口:存储无序,不可重复的数据 HashSet:作为Set接口的主要实现类:线程是不安全的:可以存储null值 LinkedHashSet:作为HashSet的子类,遍历其内部数据时,可以按照添加的顺序遍历 TreeSet:可以按照添加对象的指定属性,进行排序。1.Set接口中没有额外定义新的方法,使用的都是Colle.原创 2020-08-14 21:16:44 · 779 阅读 · 0 评论 -
ArrayList源码分析
比较ArrayList、LinkedList、Vector的异同:同: 三个类都实现了List接口,存储的数据都是有序可重复的数据。异: ArrayList:作为List接口的主要实现类,线程不安全,效率高:使用Object【】存储.elementData存储 LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList效率高:底层使用的双向链表存储 Vector:作为List接口的一个古老实现类,线程安全,效率低.使用Object【】存储eleme.原创 2020-08-14 16:01:19 · 131 阅读 · 0 评论 -
集合方法概述
一、集合框架的概述:1、集合、数组都是对多个数据进行存储操作的结构,简称java容器说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt ,.jpg,.avi数据库中的存储)2.1、数组在存储多个数据方面的特点: ——>一旦初始化以后,其长度就确定了。 ——>String【】arr ;int【】 arr1; 数组一旦定义好,数组的类型就已经确定了。我们只能操作指定类型的数据2.2、数组在存储多个数据方面的缺点: ——>一旦初始化,数组长.原创 2020-08-13 14:57:56 · 238 阅读 · 0 评论 -
注解简要概述
annotation的使用:1、理解注解:①:jdk5.0新增的功能②:annotation 其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并让程序员在不改变原有逻辑的情况下,在一些源文件里嵌入一些补充信息③:在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等,在JAVAEE/安卓等中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JAVAEE旧版中所遗留的繁杂代码和XML配置等2、Annotation的使用示例:示例1:生成文档.原创 2020-08-12 14:44:37 · 291 阅读 · 0 评论 -
枚举类的理解及使用
一、枚举类的使用1.枚举类的理解: 当一个类的对象是有限个确定多个的时候,称此类为枚举类2.当需要定义一组常量时:强烈建议使用枚举类3。如果枚举类只有一个对象,则可以作为单例模式的实现方式二、如何定义枚举类*方式1:jdk5.0之前,自定义枚举类*方式2:在jdk5.0时,可以使用enum关键字定义枚举类三、Enum类中的常用方法:values()方法:返回枚举类型的对象数组,该方法可以很方便的遍历所有的枚举值valueof(String str):可以把一个字符串转为对应的原创 2020-08-11 21:16:40 · 323 阅读 · 0 评论 -
String与其他类型结构之间的转换
原创 2020-08-09 23:10:21 · 100 阅读 · 0 评论 -
多线程的创建4:使用线程池
线程池多数被框架所直接覆盖,以下仅为基础概念原创 2020-08-08 20:05:01 · 96 阅读 · 0 评论 -
多线程的创建3:实现Callable接口
1.创建一个实现Callabl的实现类2.实现call方法,将此线程需要做的操作声明在call()中3.创建callable接口类实现的对象4.将此callable接口实现类的对象作为参数传递到FutureTask的构造器中,创建FUtureTask的对象5.将FutureTask的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start()6.获取Callable中call方法的返回值 (用get方法)...原创 2020-08-08 17:24:23 · 220 阅读 · 0 评论 -
线程安全练习:同步方法、同步代码块
原创 2020-08-07 21:33:52 · 167 阅读 · 0 评论 -
线程安全问题解决方案3:Lock锁
原创 2020-08-07 17:49:10 · 206 阅读 · 0 评论 -
线程安全问题解决方案2:同步方法
原创 2020-08-07 17:41:02 · 119 阅读 · 0 评论 -
线程安全问题解决方案1:同步代码块
实现Runnable接口的同步:继承Thread类的同步:在继承Thread中,创建Thread类的对象有三个。在synchronized中同步监视器要保证多个线程共用同一把锁,所以不可以使用this。而实现Runnable可以使用this...原创 2020-08-06 22:00:20 · 133 阅读 · 0 评论 -
线程的生命周期
一个完整的生命周期通常有如下五种:1.新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态2.就绪: 处于新建状态的线程被start()后,将进入线程队列等待Cpu时间片,此时它已经具备了运行的条件,只是没分配到CPU资源3.运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能4.阻塞:在某种特殊情况下,被人挂起或者执行输入输出操作时,让出CPU并临时终止自己的执行,进入阻塞状态5.死亡:线程完成了它的全部工作或线程被提前强原创 2020-08-06 19:14:51 · 135 阅读 · 0 评论 -
多线程的创建2:实现Runnable接口
原创 2020-08-06 18:35:23 · 132 阅读 · 0 评论 -
多线程的创建:继承于Thread类 (附Thread的几个方法)
多线程的创建有4种方式。本章节是第一种:继承与Thread类步骤:原创 2020-08-05 21:42:59 · 188 阅读 · 0 评论 -
冒泡排序优化
优化查询次数,当发生内部for循环不再交换顺序时,排列结束可以提前结束原创 2020-07-30 10:21:04 · 120 阅读 · 0 评论 -
数组扩容操作arraycopy
arraycopy源代码描述:相关位置用法解释:实例:输出结果:常用方法:删除数组指定位置元素并返回数组主函数调用后结果:原创 2020-07-29 19:21:32 · 245 阅读 · 0 评论 -
Java_内部类基本概念
非静态内部类:1.非静态内部类必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象2.非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员3.非静态内部类不能有静态方法、静态属性、静态初始化块4.外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例...原创 2020-07-27 11:33:13 · 80 阅读 · 0 评论 -
Java_接口学习
常考知识点:java有多继承吗?类没有多继承,接口可以多继承。原创 2020-07-27 11:05:20 · 88 阅读 · 0 评论