![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 65
主要是一些关于Java基础知识的文章
AlexTuringGong
这个作者很懒,什么都没留下…
展开
-
Java网络编程——过滤器
JavaEE的规范(接口)之一,作用是拦截请求,应用场景:权限检查,事务管理…使用过滤器:建立一个类继承Filter接口,获取session对象,再用session里的数据来判断。在配置web文件的时候,规定在什么地方使用过滤器。<filter-mapping> <filter-name>AdminFilter</filter-name> <url-pattern>/admin/*</url-pattern>//过滤器安原创 2021-01-20 13:28:58 · 177 阅读 · 0 评论 -
Java网络编程——Servlet
文章目录简介生命周期继承类请求HttpServletRequest和HttpServletResponsebase标签重定向CookieSession简介Servlet是Java EE的规范之一,也就是接口。Servlet程序是运行在服务器上的Java小程序,根据HTTP协议可以接受客户端发来的请求,响应数据给客户端。实现Servlet接口:新建servlet接口的实现类,重写service方法。在web.xml文件里写配置,举例:<servlet> <servle原创 2021-01-20 13:28:42 · 268 阅读 · 0 评论 -
Java网络编程——基础
文章目录基本概念TomcatXMLJSONJavaEE的结构基本概念请求(request):浏览器向服务器发送信息,要求服务器返回要求的数据。响应(response):服务器向浏览器返回要求的数据。JavaWeb三大组件:Servlet程序,Filter过滤器,Listener监听器服务器:最主流的是tomcatTomcattomcat简介:官网下载压缩包后,解压到指定文件夹就可以使用。开启和关闭:1.在bin文件夹里找到开启,然后执行,关闭要么执行关闭程序,要么直接关原创 2021-01-20 13:27:56 · 107 阅读 · 0 评论 -
Java并发编程——多线程基础
文章目录创建线程的方法继承Thread类实现runnable接口实现Callable接口终止线程中断线程线程通信线程限流创建线程的方法继承Thread类构造一个内部类,继承thread类,然后重写run()方法。如果需要用到共享数据,那么必须是静态属性;举例:thread\ThreadTest.java,thread\Window2.java实现runnable接口过程:1.创建一个类实现runnable接口;2.创建这个类的对象;3.把这个对象作为参数,新建一个Thread类的对象;原创 2021-01-14 15:59:23 · 88 阅读 · 0 评论 -
Java基础——反射
反射与直接new的方式的区别:编译的时候不知道造哪个类的对象,需要用到反射,因为反射具有动态性。比如,服务器不知道用户登录还是注册,因而不知道造谁的对象,所以需要用到反射。反射与封装性:反射解决的是能不能调的问题,封装性解决的是应该调谁的问题。Class类类的编译过程:程序接受javac.exe命令后,会新建一个或多个字节码文件,以.class结尾。类的加载过程:使用java.exe命令运行字节码文件,首先是加载到内存中去,这就是运行时类。运行时类就是Class的对象,每个Class的实例都原创 2021-01-14 15:57:14 · 92 阅读 · 1 评论 -
Java基础——泛型
文章目录泛型类和泛型方法通配符不使用泛型,使用Object的问题:不安全,会混入其他类型的变量。取用变量的时候,如果声明类型就要强转,很容易出现类型转换错误,特别是当混入其他类的时候。泛型不能使用基本数据类型,只能使用类实例化时,没有声明类型,就默认为Object类泛型类和泛型方法异常类不能声明为泛型静态方法中不能使用泛型类,因为静态方法在实例化声明泛型前就已经加载。泛型方法的泛型参数和泛型类没有关系泛型方法可以声明为静态方法,因为是在方法调用时声明泛型参数,而不是实例化的时候。*原创 2021-01-14 15:55:35 · 143 阅读 · 0 评论 -
Java基础——IO流
文章目录FileReader类FileInputStream类缓冲流转换流对象流随机存取文件流(RandomAccessFile)不常用的流FileReader类举例:IO\FileReaderWriterTest.jav;IO\FileWriterTest.javaFileInputStream类可以批量读写英文文本文件,英文字符只有一个字节,而其他语言占多个字节,就会出现乱码的情况。如果一个一个读写或只是复制操作,不涉及控制台输出,文本文件还是可以用字节流处理。(.txt,.java,.C原创 2021-01-14 15:55:00 · 93 阅读 · 0 评论 -
Java基础——HashSet和TreeSet类
文章目录HashSetTreeSetHashSet源码:添加元素的过程:先调用该元素所属类的hashCode()方法计算哈希值,再处理得到底层数组的索引位置。如果得到的索引位置上已经有元素,二者的哈希值不一定是一样。这时,比较哈希值,如果相同,再用equals()方法比较,如果返回为true,添加失败。如果哈希值相同而且用equals()方法比较返回为false,用链表的方式添加到这个元素的后面,即原来的元素指向新添加的元素。*哈希值计算方法:哈希值相当于是一个随机数。乘数一般选31,原创 2021-01-09 19:26:18 · 122 阅读 · 1 评论 -
Java基础——ArrayList类和LinkedList类
文章目录ArrayListLinkedList实现类互转ArrayList相当于动态数组ArrayList与LinkedList、Vector的异同:同:·都是List接口的实现类,存储有序、可重复数据·ArrayList与Vector的底层实现都是使用Object类型的数组异:·ArrayList是线程不安全的,效率更高,Vector是线程安全的,源码里的许多方法都是同步方法。·LinkedList的底层实现是使用双向链表,在插入、删除操作上效率更高。·ArrayList扩容的默认容量原创 2021-01-09 19:25:51 · 304 阅读 · 1 评论 -
Java基础——数组
内存分析创建一个数组后,存在栈里,他的第一个元素在堆空间里的地址也就是首地址,就是该数组的内存地址,用一个十六进制数表示。一开始数组里的值都默认为null/0,添加元素后被替代。一旦数组再次初始化,原有的数组就被垃圾回收器回收,内存地址也会发生变化。当方法执行完后,所有的数组出栈,内容也会被垃圾回收器回收。二维数组初始化方式:1)int[][] array1 = new int[2][]; array1[0] = new int[1]; array1[0][0原创 2021-01-08 16:40:30 · 118 阅读 · 0 评论 -
Java基础——集合接口
文章目录Collection接口List接口Set接口Map接口数组需要实现设定好固定长度,而现实中往往需要数据结构的长度可变,我们就需要基于新的数据结构——集合。和集合相关的接口主要Collection接口和Map接口。Collection接口add()addAll():添加一个collection对象contains():用equals方法判断是否相等,从而判断是否包含,如果需要只判断自定义对象的内容是否相等,需要重写对象的equals方法containsAll():用于判断是否包含coll原创 2021-01-08 16:17:37 · 194 阅读 · 0 评论 -
Java基础——如何处理程序出现的问题
文章目录一般try/catch语句throw/throws 语句一般过程:先抛出异常给JRE,再由JRE捕获异常。分类:throwable 的 子类:Error(不需要程序员处理), Exception(chekcked;unchecked)异常处理原则:异常处理不能替代错误,比如用户名错误;异常处理不能替代测试;异常处理不能小粒度地处理,最好是整个任务放在一个try语句里;异常处理最好在高层即父类进行。常见unchecked异常处理方法:ArithmeticException,举例:原创 2021-01-08 15:59:11 · 101 阅读 · 0 评论 -
Java基础——File类和Scanner类
File类 File f1 = new File("e:/谷歌下载/results-pr01.xls"); f1.isFile(); f1.isDirectory(); File f2 = new File("e:/谷歌下载/","test.txt"); try { f2.createNewFile();<>如果文件不存在,创建路径后,还要用这个这个方法才可以创建<>原创 2021-01-08 15:30:33 · 306 阅读 · 0 评论 -
Java基础——时间相关类
文章目录Date类DateFormat类和SimpleDateFormat类Calendar类和GregorianCalendar类Date类方法:before();after();源码:public Date() { this(System.currentTimeMillis());<>打印当前距1970.1.1零时过去的毫秒数<> } public long getTime() { return getTimeImp原创 2021-01-08 15:15:09 · 136 阅读 · 0 评论 -
Java基础——枚举类
使用保留字enum作为关键字修饰public class Season { private final String seasonname; private final String seasondescr; private Season(String seasonname, String seasondescr) { this.seasonname = seasonname; this.seasondescr = seasondescr;原创 2021-01-08 15:13:51 · 61 阅读 · 0 评论 -
Java基础——包装类
包装类将基本数据类型转化为对象操作,位于java.lang包,自动导入。比如Integer类就是int类型的数字转化Integer对象 Integer.parseInt();//将字符串转化为数字 Integer i = new Integer("2323"); String s = i+"";//将数字转化为字符串 intValue();//将Integer转化intautoboxing(自动装箱)和unboxing(自动拆箱)为了提高效率,Java 5之后在编原创 2021-01-08 15:11:50 · 68 阅读 · 0 评论 -
Java基础——String、String Builder和String Buffer类
文章目录String不同赋值方式不可变性StringBuilder的可变性StringBufferStringString实际上就是一个字符数组;初始化方法:1) char[] c = {‘a’,‘b’};String s1 = new String©;2)String s2 = new String{‘a’,‘b’};3)String s3 = “ab”;常用方法: String s= "abc"; s.charAt(0); s.indexO原创 2021-01-08 15:02:16 · 314 阅读 · 0 评论 -
Java面向对象编程——面向对象编程(3)
文章目录基本概念强转多态final关键字abstract关键字抽象类接口基本概念子类调用关键词“extends”继承父类,也就拥有了父类的所有属性和方法,但一定可以全部访问,可以重写父类的方法,增加属性;Java的类只有单继承,即一个类最多只能继承一个类;所有类,如果没有调用extends,那么默认继承Object类。强转父类、子类可以互相转,但子类之间不能转;子类向上转的时候,就需要用()强制转型,举例:Object obj = new String("abcd");String str原创 2021-01-08 14:54:17 · 71 阅读 · 0 评论 -
Java基础——面向对象编程(2)
静态值内存分析栈:每执行一个方法,就创建一个栈帧,执行完栈帧就被删除堆:存放创建的对象并赋给对象地址方法区:存放类的代码和常量、字符串、静态属性、方法JVM类的运行过程:代码、静态值、常量都放在方法区,创建的对象放在“堆”,运行的方法放在栈,运行一个创建一个栈帧,结束后栈帧被删除。内部类成员内部类:非静态内部类:可以调用外部类的方法、变量;必须要外部类的对象创建后,才能创建内部类的对象;举例:public class User {class Administer {原创 2021-01-08 09:24:09 · 136 阅读 · 0 评论 -
Java基础——面向对象编程(1)
文章目录内存分析:内部类构造器参数值传递方法重写方法重载深拷贝与浅拷贝对象是类的具体化内存分析:栈:每执行一个方法,就创建一个栈帧,执行完栈帧就被删除堆:存放创建的对象并赋给对象地址方法区:存放类的代码和常量、字符串、静态属性、方法JVM类的运行过程:代码、静态值、常量都放在方法区,创建的对象放在“堆”,运行的方法放在栈,运行一个创建一个栈帧,结束后栈帧被删除内部类成员内部类:非静态内部类:可以调用外部类的方法、变量;必须要外部类的对象创建后,才能创建内部类的对象;举例:pu原创 2021-01-07 20:03:43 · 68 阅读 · 0 评论 -
Java基础——注释
文章目录一般注释文档注释类注释方法注释属性注释生成文档当代码变多,甚至需要多个一起编写代码的时候,我们需要注明代码的相关信息,让其他人能更好理解代码。注释是给予提示或其他简短信息,当需要给出很多信息时,就需要文档注释,这些文字都不被执行。一般注释使用//标识单行注解//把0赋值给aint a = 0;使用/开头,/结尾,可以编写多行注解/**把0赋值给a*再把a加1*/int a = 0;a++;有时代码里又/*分隔符,这时就不适合使用这种形式的多行注释文档注释用/**开头原创 2021-01-06 17:03:30 · 79 阅读 · 0 评论 -
Java基础——控制语句
文章目录条件判断语句if...else语句三元运算符switch语句条件判断语句条件判断语句如果为真,就执行花括号内的语句,相当于人类语言中的“如果…那么…”if…else语句使用if、else、else if等保留字,如果需要执行的语句就只有一个,就可以不加花括号。int i = 1;if(i > 0) { i++; System.out.print(i);}这里先判断i是不是大于0,大于0把i加1,再打印i。if语句还可以和else语句组合int i = 1;if(i原创 2021-01-06 15:59:31 · 124 阅读 · 0 评论 -
Java基础——运算符
文章目录四则运算:布尔运算:三元运算符位运算条件判断四则运算:加:+减:-乘:*整除:/取模:%x += 4等于x = x+4,同样x /= 4 等于x = x/4i ++ 或++i等于i = i+1,只不过i++如果和其他操作结合,那么i会在操作结束后才加1,而++i则会在操作之前就加1。布尔运算:仅限于基本数据类型,如果满足就返回true,否则返回false等:x == y不等:x != y小于:x < y大于:x > y与:&和原创 2021-01-06 13:47:07 · 127 阅读 · 0 评论 -
Java基础——如何表示数值
文章目录字面量、变量和常量基本数据类型整数类型浮点数类型字符类型布尔类型字符串字面量、变量和常量字面量(literal)是编程语言中对固定值的一种表示方法,或者说就是等号右边的数值。比如int a = 123;char b = 'c';变量(variable):可以变化或赋值的数值。用**一个“=”**进行赋值,多于1个不行。比如上面的a和b就是变量,需要在前面先声明其类型。常量(constant):赋值后不能改变数值的变量,如final double c = 1.0;基本数据类型Ja原创 2021-01-05 17:28:33 · 980 阅读 · 3 评论 -
Java基础——语法
文章目录类结构包命名规范编程语言需要有一定的结构组织编写的代码,就像人的语言有语法一样。类结构类是Java语言最基本的逻辑单位,所有内容都必须放在类里,Java程序就是由一个一个类构成的。public class HelloWorld{ int a; public void test(){ }}一个.java文件内可以有多个类,但只能有一个public修饰的类,比如这里只有HelloWorld可以被public修饰。类的构成:成员变量/属性:用于存储数值或作为参数使用,比如这里原创 2021-01-05 15:29:07 · 167 阅读 · 0 评论 -
Java基础——搭建Java运行环境
文章目录术语术语JDK:Java开发工具,JRE:Java运行环境Java SE:Java EE:open JDK原创 2021-01-05 13:48:37 · 234 阅读 · 1 评论 -
Java基础——HashMap类及源码
文章目录属性空参构造器添加数据第一次添加:非第一次添加及扩容:具体扩容操作扩容原理总结属性DEFAULT_INITIAL_CAPACITY : HashMap的默认容量,16MAXIMUM_CAPACITY: :HashMap的最大支持容量,30位即2^30DEFAULT_LOAD_FACTOR:HashMap的默认加载因子,为0.75,这是为了减少数组中出现链表的情况,也确保数组空间的利用率不过低TREEIFY_THRESHOLD:Bucket中链表长度大于该默认值,转化为红黑树,默认为8U原创 2020-11-14 19:10:04 · 92 阅读 · 0 评论 -
String的不可变性与StringBuilder的可变性原理(JDK1.8)
文章目录String的不可变性StringBuilder的可变性原理:扩容原理:String的不可变性String的底层是一个不可变的字符数组。 private final char value[];如果发生变化,即使长度一致,也要更改内存地址。 String s1 = "abc"; String s2 = s1; s2 = "mbc"; //结果为false System.out.println(s2 == s原创 2020-11-14 15:12:37 · 563 阅读 · 0 评论 -
创建Java线程的方法
文章目录继承Thread类实现runnable接口实现Callable接口线程池线程池的优点线程池的种类自定义线程池继承Thread类构造一个内部类,继承thread类,然后重写run()方法。如果需要用到共享数据,那么必须是静态属性;举例:class MyThread extends Thread{ @Override /* 重写run方法是为了让这个线程执行这个类的特殊任务; */ public void run() { super.r原创 2020-11-13 09:23:14 · 45 阅读 · 0 评论 -
Java并发编程——概念
文章目录并发基本概念并发级别并发编程特征Happen-Before原则线程生命周期线程优先级守护线程信号量倒计数器循环栅栏并发基本概念程序:为完成某个任务、用某种语言编写的一系列指令的集合,是静态的代码、静态的对象进程:程序执行的过程,即正在执行的程序,是动态的、有生命周期的线程:进程可进一步细分为线程,是程序内部的一条执行路径,如电脑管家杀毒、清理垃圾,就是两个单核CPU:只有一个CPU,在同一个时间片内,只执行一个线程。通过时间片轮转,在不同线程之间迅速地切换线程,让人能感觉在原创 2020-11-13 09:14:28 · 113 阅读 · 0 评论 -
JavaIO流——NIO
NIO简介NIO是Java对IO的替代,是一种同步非阻塞IO,面向缓冲区而不是流,所以效率更高。早期NIO不够好,JDK7.0以后NIO大幅改善,称为NIO.2。提供Path类替代原来的File类,拥有更多方法,而且File类如果输入错误,返回false或null,而不是抛异常,Path类就解决了这个问题。还提高Paths、Files两个工具类。组成Channel:类似于流,一个流可以和文件或网络Socket对应。如果向Channel写入数据就等于向文件或Socket写入。Buffer:是一个缓原创 2020-11-13 09:00:40 · 122 阅读 · 0 评论