- 博客(163)
- 收藏
- 关注
原创 IO流基础
Properties是一个专门用于读取配置文件的集合类配置文件的格式:键 = 值键 = 值注意键值对不需要空格,也不用双引号包裹,默认是String类型Properties的常用方法load:加载配置文件的键值对到Properties对象list:将数据显示到指定设备getProperty(key):根据键获取值setProperty(key,value):根据键修改值,如果没有键就添加。
2023-04-12 21:53:13
867
1
原创 java坦克大战(2.0)
在前面的坦克单子1.0已经完成了移动 绘制我方/敌方坦克。接下来会运用到前面学习的多线程的基础,来实现发射子弹的效果想要坦克发射子弹,可以用以下思路按J发射子弹将子弹变成一个线程,让子弹的x,y值不停变换,画板重绘,当子弹到达边界时就将线程销毁步骤如下:子弹类子弹类(线程)定义好了自然要启动,而子弹是从坦克发送出来的,所以启动线程就在坦克类中定义坦克类监听器画板类绘制子弹1.因为子弹类是只有在按J之后才创建的,所以不能直接在paint绘制,而是需要加if判断子弹类不是空,且子弹线程是正在运行的,才绘制
2023-03-17 20:00:56
1578
原创 进程与多线程(入门)
要了解什么是线程,得先知道什么是。:为完成特定任务,用某种语言编写的一组指令的集合。例如,QQ,Steam,亦或者java写的helloword。这些都是程序了解了程序,还得清楚什么是:就是指运行中的程序,比如双击QQ,那么就会启动了一个进程,操作系统就会为其分配该进程所需的内存空间,当又点开了一个程序,比如谷歌浏览器,那么就会又启动一个进程。进程是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,有它自身产生,运行中,消亡的过程。
2023-03-09 15:05:53
545
原创 java坦克大战(1.0)
后面开始学习怎么使用java制造一个坦克大战游戏但是不是直接开始做,而是随着这个游戏程序的制造,一边学习新知识融入到游戏中。包括多线程,反射,IO流…
2023-03-05 21:04:16
537
原创 泛型<E>
泛型是 Java SE5 出现的新特性,泛型的本质是类型参数化或参数化类型,在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型。通俗的说:一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,得借助Object,但是如果要用到方法还得向下转型,这种刻板的限制对代码的束缚就会很大。泛型的作用:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型,可以有效避免ClassCastException。
2023-02-26 18:22:25
578
原创 Java-集合(6)
在开发中使用什么集合实现类,取决于业务的特点,然后进行选型。首先需要判断存储的数据是单列的还是双列的TreeSet也是实现了Set接口的一个实现类,他的主要特点是排序。TreeSet集合底层实际上是一个TreeMap,而TreeMap集合底层是一个二叉树,也将TreeSet集合中的元素称为可排序组合下面重点分析,是怎么实现排序的。重点操作 使用有参构造器Comparator 的compare 方法,写一个匿名内部类作为形参在构造器具体的排序方法由compare 自己定义举例说明:String类型的
2023-02-23 14:26:18
348
原创 Java-集合(5)
存放的元素也是键和值:key-valueHashtable的k-v都不能存放null,负责会抛出异常Hashtable的使用方法基本上和HashMap一致Hashtable是线程安全的,HashMap是线程不安全的初始底层由数组Hashtable$Entry[]初始化大小为11初始临界值threeshold 8 = 11*0.75,所以也是到75%就扩容Hashtable除了第一次初始化大小,后面扩容机制为 *2+1.
2023-02-19 21:45:39
521
原创 Java-集合(4)
数组+链表实际上就是在数组的空间中里存一个对象(链表的节点),而这个对象的属性next指向另一个对象(另一个节点),另一个对象的属性next又指向另一个对象…接着又是判断第三个是不是空,是空就直接新建节点添加,如果不是空,就比较一下第三个节点保存的元素是否与要添加的元素相同。但是由于第一次添加也是“jack”所以他们得到的下标是一样的,因此p此时是tab[14]的头节点对象,而这个头节点对象的key变量保存着“jack”。但是如果new了两次Dog对象,名字是相同的,那么是可以添加进去的。
2023-02-04 19:52:10
592
原创 Java-集合(3)
1.Vector底层保存数据的也是一个对象数组:protected Object[] elementDate;2.Vector是线程同步的,也就是线程安全Vactor的操作方法都带有synchronized修饰。以此可以进行安全线程保障,所以在开发中如果确认只有一个线程操作集合就用ArrayList如果有多个线程就用Vector。
2023-01-08 22:17:56
611
1
原创 Java-集合(1)
在前面的学习中,保存多个数据,用的是数组。但是数组有很多不同的地方:1.长度开始时必须指定,且一旦指定无法更改2.保存的必须为同一类型元素,虽说可以多态保存,但是限制性也很大3.使用数组进行增加删除元素 比较麻烦所以就产生了集合类这个概念所谓集合:简单来讲,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。可以理解为另一种类似数组的东西,也是用于存放数据的。但是比数组方便。集合就是由若干个确定的元素所构成的整体,集合是存储对象的容器,可以存储、的对象。
2022-12-28 16:43:11
905
原创 小节练习题
String反转将abcdef反转成aedcf编写public static String reverse(String str ,int start,int end){}方法完成思路分析:1.将String字符串转成char数组2.从start下标开始到end下标结束,一个++一个–,开始交换,设置条件end不能大于等于start。
2022-12-20 17:55:10
309
原创 BigInteger类和BigDecimal类
当在编程中遇到需要保存一个特别大的数字,比如地球的人口。这时如果用long类型保存可能都不够了,此时就需要用到BigInteger。
2022-12-14 20:44:51
228
原创 Systm类的常用方法
destPos-----倒数第二个0代表把源数组的数据拷贝到目标数组的哪个索引开始。上面代码代表着将arr数组的1号下标开始复制到arr2的0号下标处,一共复制3个。srcPos0-------代表从源数组的0号下标开始赋值。dest-------代表把源数组的数据拷贝到哪个数组。length-------3代表从源数组拷贝多少个元素。src-------代表要被复制的数组-源数组。
2022-12-13 20:29:51
473
原创 StringBuffer类
通过前面的String类的学习,了解到String类的字符串每当要改变内容时会直接在常量池中寻找有没有,有就直接改变地址指向新内容。而数组是保存在堆中的,属于引用类型,可以随意更改在堆中的内容,且地址不会变。1.首先输出长度,此时sb是null,调用append,底层最后会使用一个父类的appendNull的方法,把null变成’n’u’l’l’4个字.符存入value,所以长度是4。要求实现输入的数字小数点开始,往前梅隔3位数,就插入一个逗号“,”1.获取输入的数字,转成StringBuffer类型。
2022-12-09 19:39:39
582
原创 包装类-Wrapper
Java是一种面向对象的编程语言,学习Java时就被明确灌输了一个概念:OOP,即面向对象编程。一切皆对象。但是基本类型是不具备Java中对象的某些特征,对象内部可以封装一系列属性和行为,但是这些在基本数据类型中都无法满足,所以对应的包装类型就应运而生了。也就是说单独的一个 int a = 100;那么这个a它只能是代表一个值,并无法把它当作一个对象来操作。而装箱就是把 值类型变成引用类型的一个过程,拆箱就是把一个引用类型重新变成值类型的过程。只有装过箱的才能拆箱jdk5以前是需要手动装箱拆箱的:演示:
2022-12-04 15:59:55
424
原创 异常(exception)
当程序出现了某些错误,但该错误信息 并没有在Throwable子类描述处理,这个时候可以自己设计异常类,用于描述错误信息步骤:1.定义类:自定义异常类名,继承Exception或RuntimeExcception2.如果继承Exception就是编译时异常3.继承RuntimeExcception就是运行时异常一般情况都是继承RuntimeExcception运行时异常,这样可以使用java默认的机制。
2022-12-01 20:15:38
1770
原创 练习作业P1
步骤分析:创建对象调用无参构造器,将此对象的price 改成9,将静态变量color 改成red。将此对象地址给到 c创建另一个对象调用有参构造器,将此对象的price 改成100,将此对象地址给到 c1输出这两个对象,自动调用Car类中重写的toString方法输出:9 red100 red。
2022-11-26 16:47:03
358
原创 注解(Annotation)
使用Annotation注解时,需要在前面加上@符号,且把注解当成一个修饰符使用。用于修饰它支持的程序元素三个基本Annotation注解@Override:限定某个方法,是重写了父类的方法,该注解只能用于方法@Deprecated:用于表示某个程序元素(类,方法等),表示已过时了,不建议使用@SuppressWarnings:抑制编译器警告,忽略某些警告。
2022-11-24 10:46:15
279
原创 枚举(enum)
将构造器私有化,防止别人再创建对象不提供set方法,防止别人修改一般枚举类的对象或属性会使用static+final修饰,实现底层优化定义枚举类时就要创建好固定的对象且通过static对外暴露案例演示:一年四季。(一年只有四个季节,不可能少或者多)//自动使用toString System . out . println(Season . SUMMER);//自定义枚举类 private String name;//构造器私有化 this . name = name;
2022-11-22 22:27:56
736
原创 Java-内部类
一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称之为内部类inner class,嵌套该内部类的类成为外部类。就像双重for循环,外部for循环里面包含着另一个内层循环。内部类是类的第5大成员,[属性,方法,构造器,代码块,内部类]内部类的最大特点就是可以直接访问外部类的私有属性,且可以体现类与类之间的包含关系。
2022-11-21 16:47:00
497
原创 Java-接口
现实中电脑 相机 笔记本等都有USB接口,且任何一个U盘都可以插入。这是因为所有的厂家都遵循了USB接口的标准和规范。才可以让全部的USB接口和产品兼容匹配。而JAVA接口是一系列方法的声明,是一些方法特征的集合。一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,因此这些实现可以具有不同的行为。接口可以理解为一种特殊的类,在这个特殊的类中,里面只有全局常量和公共抽象方法(jdk8以后可以有默认方法和静态方法)。
2022-11-17 17:04:37
318
原创 抽象类和抽象方法
当父类的某些方法,需要声明,但是又不确定如何实现时,可以用abstract关键字修饰该方法这个方法就变成了抽象方法。同理用abstract修饰类该类就是抽象类。抽象方法只能存在抽象类中。
2022-11-13 16:24:36
541
原创 final关键字
final:最后的 最终的final可以修饰 类 方法 属性 和局部变量4.当final修饰局部变量时,此局部变量就成为了局部常量,也无法被修改。
2022-11-12 12:49:37
194
原创 设计模式--单例模式
单例模式可以理解为只有一个实例对象的设计模式简单来说就是采取一定的方法保证在整个的软件中对每个类只能存在一个对象实例的约束,只提供一个取得其对象实例的方法。1. 构造器私有化2. 类的内部创建对象3. 向外暴露一个静态的公共方法。
2022-11-10 21:56:54
297
原创 代码块详解
代码块又称初始化块,属于类中的成员(是类的一部分),类似于方法:将逻辑语句封装在方法体中。通过{}包围起来但是和方法不同,,而且不用通过对象或类显示调用,而是加载类时,或创建对象时。
2022-11-08 23:12:02
827
原创 类变量/静态变量
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,都是去访问同一个地址的空间,同理任何一个该类的对象修改它时,修改的也是一个变量,如上图所示。定义语法:访问修饰符 static 数据类型 变量名;//访问修饰符和static不分前后。
2022-10-29 19:59:13
747
原创 项目练习:房屋出租系统
--------------房屋出租系统------------------------------房屋出租系统------------------------------房屋出租系统------------------------------房屋出租系统------------------------------房屋出租系统------------------------------添加房屋------------------------------添加房屋---------------
2022-10-26 15:31:09
690
原创 面向对象练习
定义一个Person类,{name,age,job},初始化Person对象数组,有3个person对象,并按照age的值,从小到大进行排序,使用冒泡排序。注意点:对象的交换方式。
2022-10-21 20:36:50
610
原创 简易项目--零钱通(2)--面向对象版
整体思路:将面向过程实现的各个功能封装到类的各个方法中,再通过另一个类实例化出封装方法的对象进行调用。面向对象编程,为后续的维护,新增功能,修改功能。
2022-10-16 15:36:09
109
原创 toString方法
例如随便toString一个对象,输出的是com.equals_.toString_@1b6d3586。子类往往会重写toString方法,用于返回对象的属性信息。toString_{name=‘张三’, age=24}toString_{name=‘张三’, age=24}
2022-10-09 21:09:37
1103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人