JAVA基础
文章平均质量分 92
野猪杀手X
这个作者很懒,什么都没留下…
展开
-
java 泛型深刻理解,泛型实现原理——类型擦除
泛型即参数化类型,用于解决数据类型的安全性问题,通过泛型参数可以指定传入的对象类型。比如创建集合的时候指定了集合的泛型为String类型,就表示该集合中只能存放String类型对象。泛型不能用基本数据类型在给泛型指定具体类型后,可以传入该类型或者其子类类型。原创 2023-06-30 10:32:30 · 575 阅读 · 0 评论 -
23 反射
对上面第7点的解释:类加载完了之后,在 方法区 还会得到一个 字节码二进制文件,即前面面向对象章节讲的在方法区中加载类信息。即 类加载 完了之后,除了会在堆生成一个Class类对象(一种数据结构,可以进行操作),还会在方法区生成一个类的字节码二进制数据(又叫元数据,二进制数据操作是很麻烦的)。这两者之间的关系是引用关系,/*** 对Class类特点的梳理,对上面1 2 3 4 条的解释。原创 2023-04-22 22:44:30 · 66 阅读 · 0 评论 -
21网络编程
socket . getOutputStream() socket . getIputStream() //比如主机1(客户端,红)要跟主机2(服务器、绿)通信,首先客户端发起连接,服务器端接收链接就会建立数据通道(黄色线),然后主机1和2都会有一个套接字socket。如果主机1要给主机2发送数据,那么主机1就会调用socket.getOutputStream() 向数据通道写数据。主机2要接收数据,那么主机2就会调用socket.getIputStream() 从数据通道中读取数据。原创 2023-04-22 22:34:30 · 57 阅读 · 0 评论 -
19IO流
注意:节点流只能针对某一种特定的数据进行操作,比如FileReader/FileWriter只能对文件进行操作(按字符),ByteArrayInputStream / ByteArrayOutputStream只能对数组进行操作(按字节操作)等等,这样就造成了节点流是固定的,这是跟数据源直接相关的,更加底层。灵活性不足。原创 2023-04-22 22:20:59 · 69 阅读 · 0 评论 -
17Java多线程
/模拟死锁 public class DeadLock_ {//模拟死锁现象 DeadLockDemo A = new DeadLockDemo(true);A . setName("A线程");B . setName("B线程");} } //线程 class DeadLockDemo extends Thread {//保证多线程,共享一个对象,这里使用static static Object o2 = new Object();原创 2023-04-22 21:37:59 · 158 阅读 · 0 评论 -
java运算符总结
10 % 3 结果为 1;-10 % 3 结果为 -1;;-10 % -3 结果为 1例子:-10.5%3// a%b,当 a 为小数时,有一个对 a 的强制类型转换,公式为:a - (int)a/b*b,即 -10.5 - (-10)/3*3着重说明一个面试题:int i = 1;i = i++;//规则使用临时变量:(1)临时变量 temp = i(等号右边,因为++优先级比=高);(2)i = i + 1(等号右边);(3)再 i = temp(等号左边)//输出结果为 1。原创 2023-04-20 15:14:11 · 158 阅读 · 1 评论 -
15Java泛型
老韩理解:泛(广泛)型(类型)=> 可以是 Integer,String,Dog(自定义类型)原创 2023-04-20 16:43:29 · 65 阅读 · 0 评论 -
4程序控制结构
程序控制分为:顺序控制,分支控制(if else,switch),循环控制(for,while,do while),break,continue,return。原创 2023-04-20 15:16:38 · 126 阅读 · 1 评论 -
5数组、排序和查找
第一种动态分配方式//或者 int a[] = new int[3]第二种动态分配方式int [ ] a;// 先声明一个数组 a ,再给它分配内存空间,可以存储3个 int 类型的数据,此时没有指定值,每一个值默认为 0。第三种静态初始化:这种方式在数组的大小不大,且知道每一个具体的值时使用。//还可以写为:int[] a = new[]{2,3,4,5}数组被创建后,如果没有赋值,则有默认赋值:int、short、byte 和 long 默认赋值为0,float、double 默认赋值为0.0。原创 2023-04-20 15:31:35 · 133 阅读 · 1 评论 -
6面向对象编程(基础)
属性/成员变量:成员变量 = 属性 ,如 cat 类中定义的 name、age、color 叫做类 Cat 的属性 or 成员变量。属性是类的一个组成部分,一般是基本数据类型,也可以是引用类型(对象,数组)。属性的定义语法同变量:访问修饰符 属性类型 属性名;访问修饰符用于控制属性的访问范围,有四种:public,protected,默认(不写就是默认),private。属性如果不赋值则会有默认值,默认值规则与数组一样。原创 2023-04-20 15:37:51 · 128 阅读 · 0 评论 -
7面向对象编程(中级)
包的三大作用区分相同名字的类当类很多时,可以很好地管理类控制访问范围包基本语法:说明:① package:关键字表示打包;② com.hspedu:表示包名包的本质实际上就是创建不同的文件夹/目录来保存类文件,示意图如下:文件夹 aaa-bbb 就是一个包,它下面有两个类。文件夹 ccc-ddd 也是一个包,下面有三个类。封装就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(方法),才能对数据进行操作。原创 2023-04-20 15:50:46 · 96 阅读 · 0 评论 -
14Java集合
1. 集合的理解与好处 前面我们保存多个数据使用的是数组,数组的缺点有: 长度开始时必须指定,而且一旦指定,不能更改 保存的必须为同一类型的元素 使用数组进行增加/删除元素的代码思想如下: 重新创建一个新的数组,容量是原数组的 length+1,把前面的元素拷贝进去,再把新元素拷贝到最后的位置,最后把新数组的引用返回给原来的数组(新数组此时没有被引用,就会被回收)。 所以引入集合: 可以动态地保存任意多个 对象,使用比较方便 提供了一系列方便的操作对象的方法:add,remove,set,原创 2023-04-20 16:22:55 · 130 阅读 · 0 评论 -
13常用类
java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删。很多方法与 String 相同,但 StringBuffer 是可变长度的。StringBuffer 是一个容器。原创 2023-04-20 16:10:11 · 74 阅读 · 0 评论 -
12异常(Exception)
基本概念:Java语言中,将程序执行中发生的不正常情况称为 异常。(开发过程中的语法错误和逻辑错误不是异常)执行过程中所发生的异常事件可分为两大类:①、Error(错误):Java虚拟机无法解决的严重问题。如:JVM 系统内部错误、资源耗尽等严重情况。比如:StackOverflowError [栈溢出] 和 OOM (out of memory),Error是严重错误,程序会崩溃。②、Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。运行时异常。原创 2023-04-20 16:04:10 · 100 阅读 · 0 评论 -
10面向对象编程(高级)
类方法也叫静态方法。定义类方法的语句:访问修饰符static数据返回类型 方法名(){}static访问修饰符 数据返回类型 方法名(){}类方法的调用:类名.类方法名 or 对象名.类方法名注意:类方法的调用也要满足访问权限当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。比如:将一个冒泡排序方法设置成静态方法,以后需要排序时直接调用 类名.冒泡排序方法名,就不用了重新实例化一个对象代码化块又称为初始化块。原创 2023-04-20 15:58:51 · 270 阅读 · 0 评论