
java
文章平均质量分 68
java
饭团煲
学习记录
展开
-
Java泛型(待补充)
泛型类型是在实例化对象时确定的,而静态方法是在类加载时就可以直接调用的,无需创建对象实例。所以静态方法中的返回值、参数等不能依赖泛型类型,必须将静态方法的泛型类型和实例类型的泛型类型区分开。此外,静态方法是与类本身相关联的,而不是与类的实例相关联的。因此,即使创建了一个类的实例,静态方法也无法访问实例的泛型类型。这是不可能的,JDK的class就有上千个,而且它还不知道其他人编写的class。可以在接口中定义泛型类型,实现此接口的类必须实现正确的泛型类型。通常来说,泛型类一般用在集合类中,例如。原创 2023-09-04 23:12:37 · 160 阅读 · 0 评论 -
JavaBean
如果读写方法符合以下这种命名规范:那么这种被称为上面的字段是,那么读写方法名分别以和开头,并且后接大写字母开头的字段名,因此两个读写方法名分别是和。字段比较特殊,它的读方法一般命名为:二、我们通常把一组对应的读方法()和写方法()称为属性()。例如,属性:只有的属性称为只读属性(read-only),例如,定义一个age只读属性:类似的,只有的属性称为只写属性(write-only)。很明显,只读属性很常见,只写属性不常见。属性只需要定原创 2023-09-04 12:20:51 · 122 阅读 · 0 评论 -
Java动态代理
所谓动态代理,是和静态相对应的。Java标准库提供了动态代理功能,允许在运行期动态创建一个接口的实例;没有实现类但是在运行期动态创建了一个接口对象的方式,我们称为动态代码。JDK提供的动态创建接口对象的方式,就叫动态代理。需要实现的接口数组,至少需要传入一个接口进去;,并不存在可以直接实例化接口的黑魔法。创建代理对象,然后将接口方法“代理”给。这种方式就是我们通常编写代码的方式。还有一种方式是动态代码,我们仍然。实例,它负责实现接口的方法调用;用来处理接口方法调用的。在运行期动态创建一个。原创 2023-09-02 22:25:28 · 252 阅读 · 0 评论 -
Java空指针异常
在所有的异常中,Java程序员最熟悉的恐怕就是了。即空指针异常,俗称NPE。null指针这个概念实际上源自C语言,Java语言中并无指针。我们定义的变量实际上是引用,Null Pointer更确切地说是Null Reference,不过两者区别不大。原创 2023-09-02 22:03:27 · 392 阅读 · 0 评论 -
Java自定义异常
在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。通过IDE可以根据父类快速生成子类的构造方法。抛出异常时,尽量复用JDK已定义的异常类型;自定义异常时,应该提供多种构造方法。派生“根异常”,再派生出业务异常;例如,参数检查不合法,应该抛出。当我们在代码中需要抛出异常时,上述构造方法实际上都是原样照抄。自定义异常体系时,推荐从。原创 2023-09-02 21:15:39 · 553 阅读 · 0 评论 -
Java抛出异常
调用可以打印异常的传播栈,对于调试非常有用;捕获异常并再次抛出新的异常时,应该持有原始异常信息;通常不要在finally中抛出异常。如果在finally中抛出异常,应该原始异常加入到原有异常中。调用方可通过获取所有添加的。通过可以打印出方法的调用栈,类似:对于调试错误非常有用,上述信息表示:NumberFormatExceptionmain()process1()process1()process2()process2()查看并且,每层调用均给出了源代码的行号,可直接定位。原创 2023-09-02 20:57:21 · 451 阅读 · 0 评论 -
Java捕获异常
使用时:多个catch语句的匹配顺序非常重要,子类必须放在前面;finally语句保证了有无异常都会执行,它是可选的;一个catch语句也可以匹配多个非继承关系的异常。原创 2023-09-02 17:36:46 · 380 阅读 · 0 评论 -
Java异常处理
一个健壮的程序必须处理各种各样的错误。所谓错误,就是程序调用某个函数的时候,如果失败了,就表示出错异常是一种class,因此它本身带有类型信息。异常可以在任何地方抛出,但只需要在上层捕获,这样就和方法调用分离了classThrowableObject。Throwable有两个体系:ErrorExceptionError而Exception。某些异常是应用程序逻辑处理的一部分,应该捕获并处理。还有一些异常是程序逻辑编写不对造成的,应该修复程序本身。原创 2023-09-02 17:11:02 · 200 阅读 · 0 评论 -
synchronized锁升级
在 Java SE 1.6中,锁一共有4种状态级别从低到高依次是:无锁状态、偏向锁状态轻量级锁状 态和重量级锁状态这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。原创 2023-08-24 21:05:30 · 292 阅读 · 1 评论 -
Java面向对象
java是面型对象的编程语言,而面向对象又是什么呢???面向过程呢?面向对象和面向过程其实都是编程思路。举一个例子,做一件事:把大象放到冰箱中。做这件事的思路有两种,面向过程思路:按照步骤依次执行程序,大象放到冰箱前->冰箱门打开->大象放进去->关门,重点是做事。面向对象思路:首先区抽离出参与的对象,然后,调用对象相关方法完成执行程序需求。抽离出大象、冰箱两个对象,创建类,大象类有,大耳朵长鼻子体重,身高,跑跳走方法等等单独定义出来;冰箱类有尺寸,制冷,冰箱门开,冰箱门关等等方法。原创 2023-08-23 23:11:23 · 279 阅读 · 0 评论 -
Java详解编译型和解释型语言
字面上来说编译和解释都有‘翻译’的意思,而她们两个的区别是‘翻译’的时机不同,什么时候去翻译。举一个例子,A是中国人,B是美国人。A写了一本小说,B想看但因为语言不同,可以选择两种解决方式。第一种:把整本书全部翻译成一本英文书;第二种,找一个翻译官,看一段翻译一段,他翻回去看之前的,翻译官也要回去重新翻译。这两种方式都可以让美国人把书看完,但是如果小说更新了,第一种就需要把正本小说重新翻译一遍,代价比较大,而第二种可以实时翻译,那边改了这边可以直接翻译节省一些成本,两种方式各有好处。原创 2023-08-21 22:55:25 · 442 阅读 · 0 评论 -
JDK JRE JVM 三者之间的详解
JDK包含JRE,相当于是JRE的父亲级别,JDK是在JRE的基础上扩充了一些开发工具,让我们开发者可以使用的,而JRE是我们的运行时环境,只要安装了JRE我们就能运行java程序,但是如果要学开发的话就需要安装JDK,现实情况下安装JDK就行了,因为JDK包含JRE。可以简单地把它当作一种规范,可以用软件来实现,也可以用硬件来实现,相当于在所有的操作系统中模拟一个小小的CPU去处理Java相关的东西,有两种运行方式,分别是解释型和编译型。,可以从上图可以看出,JDK和JRE的联系?原创 2023-08-21 22:14:50 · 1082 阅读 · 0 评论 -
块/ if else/ switch /for for each
块/ if else/ switch /for for each原创 2023-08-20 22:49:05 · 406 阅读 · 0 评论 -
java可变字符串
起初计算机操作字符串,要求稳,StringBuffer支持多线程操作,这个字符串可能被好多个任务同时进行操作,例如A线程要改为“asd”B现成要改为“vbn”,会出现一些错乱问题,而StringBuffer牺牲了些性能,去协调多线程,保证线程安全,数据不丢失不发生错乱。如果不需要多线程,单线程下可以用StringBuilder,快一些。str),例如insert(2,"吖吼"),在索引号2的位置插入字符串''吖吼''StringBuilder所需时间。str)替换字串,替头不替尾。String所需时间。原创 2023-08-20 21:42:14 · 555 阅读 · 0 评论 -
String类的常用方法(api)
左闭右开[0,5),要头不要尾只有一个参数从第6位开始直到最后二、equals(Object anObject)等值比较int index。原创 2023-08-20 15:44:27 · 206 阅读 · 0 评论 -
Java字符串
虽然输出结果变了,但是并不是代表字符串是可变的;而是新建了"4"的字符串,地址从String a 指向地址333改为指向地址555。用"==" 比较,是对"值(字符串的地址)"进行比较,0x88=0x88,返回结果为true,引用的是统一份内容。根据JDK的版本不同,字符串常量池存放的位置不同。(a==b)地址不同,9999!当字符串没有变量引用的时候,而是现成的字符串,直接合并。字符串常量池从方法区的永久代移除,放在了。之前字符串常量池在方法区(想法)中的。,字符串常量池存放在元空间中。原创 2023-08-19 23:26:04 · 180 阅读 · 0 评论 -
128错误
128错误发生在:基本类型和包装器类型的转换 ,由编译器自动完成的拆箱valueOf()中。,如果值在-128~127之间,那么就从定义好的数组里取出,static { //初始化资源。查看valueOf()源码。源码中定义好了一个数组,的,需要重新开辟地址。原创 2023-07-17 18:54:56 · 309 阅读 · 0 评论 -
Java2--引用类型 JVM内存分配图
属性定义方法定义int a =10;//基本类型,直接赋值//引用类型的使用//new出具体的对象,实例化。Person是一个概念,p1是一个具体的//引用类型的定义class Person{//Person类在所属包下范围都可用//属性定义//方法定义public void m1() {//void表示没有返回值类型,啥也不返回System.out.println("我是Persion类的m1方法");原创 2023-07-31 22:40:32 · 306 阅读 · 0 评论 -
Java---变量、常量
(例如:建一个方便面工厂的类,对象属性:面重量,面饼形状,包装,生产日期... 【每个都不相同】,类属性:厂长,地址【只有一个,相同共享】)整型默认是0,字符型默认是空,布尔型默认是false,浮点型默认0.0,引用类型默认是null。局部变量是在栈区开辟空间的,全局变量是在堆区或静态常量池中开辟空间。全局变量分为对象属性(独立空间)和类属性〈共享空间)全局变量(不在任何方法中定义)常量是使用final关键字修饰。并且可以是字母或者下划线开头。局部变量(在方法中定义)全局常量必须初始化赋值。原创 2023-08-08 23:21:06 · 318 阅读 · 0 评论 -
金银铜奖牌排序----Java
其次,编写一个排序方法Hand(arr)对二维数组中的一维数组进行排序,首先根据第一位(金)排序,第一位相同,再根据第二位(银)排序,第二位相同再根据第三位(铜)排序,这里使用Arrays.sort()和lambda 表达式()->{}对数组进行排序,首先构建一个样例输入中的数组----即构建二维数组int[][] arr。接来下的n 行 每行三个数字 分别代表 金牌数量 银牌数量 铜牌数量 中间用空格隔开。奥运会开始了,想请你为各个国家和地区做奖牌排序,按照金牌>银牌>铜牌的格式进行排序。原创 2023-07-25 21:40:48 · 918 阅读 · 0 评论 -
java基础---基本类型
单独的boolean类型变量是4字节,boolean类型数组的的每一个布尔元素是1字节。if(a) { //boolean类型一般用于条件判断。char类型,来存放抽象符号的类型,只能放一个字符,使用单引号 ''要求把数字中的"打出来,示例:1234"5678。(例如:随便写一个整数40,默认是int类型)原创 2023-06-10 19:03:42 · 171 阅读 · 0 评论