- 博客(21)
- 收藏
- 关注
原创 java 21 多线程
也可以这里理解:线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作。在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何同一时刻,最多有一个线程访问,以保证数据的完整性。线程执行同步代码块时,其他线程调用了该线程的suspend()方法将该线程挂起该线程不会释放锁。4.同步方法中执行了线程对象的wait()方法,当前线程暂停,并释当前线程在同步代码块、放锁。线程体决定了线程的行为。
2024-12-04 21:41:28
1886
原创 java20 流、文件以及基于文本的应用
Java中,对数据的输入和输出以“流”的方式进行,java.io包下提供了各种流的类和接口,用以获取不同种类的数据,并通过方法输入或者输出。根据操作数据单位可以分为:字节流( 一个字节八位 8bit)和字符流(文本文件最好用字符流处理)(一个字符对应几个字节按照文件编码来看)与OutputStream 类相似,都是输出流,但是Writer类写入的的是char,而不是字节。与InputStream类相似,都是输入流,但是Reader类读取的是char,而不是字节。按照流的角色不同:结点流,处理流/包装流。
2024-12-01 22:43:07
900
原创 java 19 枚举,注解
特点:构造器私有化;本类内部创建一组对象;对外暴露对象;可以提供get方法,但是不要提供set方法//定义了4个对象,固定public static Season SPRING = new Season("春天","温暖");public static Season SUMMER = new Season("春天","温暖");public static Season AUTUMN = new Season("春天","温暖");
2024-12-01 15:36:38
149
原创 java 18 异常处理
if(!throw new AgeException("年龄需要在18-120之间");//这里我们可以通过构造器去设置信息System.out.println("范围正确");
2024-11-30 13:32:07
495
原创 Java 17 排序与查找
Arrays类提供了sort()和binarySearch() 执行binarySearch(之前应调用sort()Arrays.asList(10,7,6,5,9)方法可以直接得到一个List对象·注意:只能给引用数据类型进行排序 如果数组是基本数据类型的,需要变成其包装类。如Arrays类和Collections类。如冒泡排序,选择排序,快速排序等。用于对数组进行排序和搜索的类。1.自己编程实现排序与查找。2.系统已经有的排序与查找。参数1:要排序的数组。
2024-11-29 15:20:40
163
原创 Java 16 包装类、集合
基本数据类型对应的引用数据类型1.各个类型对应的包装类2.获取Integer对象的方式 (其他类似)a.用构造方法获取Integer的对象 JDK5以前b.用静态方法获取Integer的对象3.自动装箱和自动拆箱 JDK5 以后自动装箱:把基本数据类型自动的变成对应的包装类自动拆箱:把包装类自动的变成其对象的基本数据类型故获取包装类的对象 不需要new 不需要调用方法 直接赋值即可4.Integer成员方法静态且返回类型是String。
2024-11-28 22:31:08
869
原创 Java 15 Math类、System类、Runtime类、Object类
注意:a.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则报错 b.在拷贝的时候需要考虑数组的长度,超出否则报错 c.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型。如果没有重写equals方法,那么默认使用Object中的方法(Object中默认是使用==号比较两个对象的地址值)进行比较,比较的是地址值是否相等。默认情况下,Object类中的toString方法返回的是地址值 如果要看到对象内部的属性,应该重写父类的toString方法。
2024-11-05 22:12:28
591
原创 Java 14 泛型
应用场景:在定义类方法和接口的时候,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口;如果类型不确定,但是能知道以后只传递某个继承体系中的,就可以使用泛型的通配符。当方法中形参类型不确定时,a.使用类名后面定义的泛型(所有方法都能使用) b.在方法声明上定义自己的泛型(只有本方法能够使用)指定泛型的具体类型后,传递数据时,可以传入该类类型或者其他子类型;如果在一个类中,某个变量的数据类型不确定,就可以定义带有泛型的类。此方法可以理解为变量,但是不是用来记录数据的,而是用来记录类型的。
2024-11-05 14:50:11
419
原创 java13 内部类
写在成员位置的,属于外部类的成员;当方法的参数是接口或者类的时候,以接口为例,可以传递这个接口的实现类对象,如果实现类只要用一次,就可以用匿名内部类简化代码。方法二:直接创建格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象(当成员内部类被非私有修饰时)方法一:在外部类中编写方法,对外提供内部类的对象(private修饰内部类时候)内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。该类可以直接访问外部类的成员,也可以访问方法类的局部变量。匿名内部类的本质就是隐藏了名字的内部类,
2024-10-21 18:54:20
268
原创 java12 抽象类、接口、适配器设计模式
抽象方法:将共性的方法抽取到父类以后,由于每个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法。a.接口代表规则,是行为的抽象,想让那个类拥有一个行为,就让这个类实现对应的接口就可以了。默认方法不是抽象方法,所以不强制被重写,但是如果被重写,重写的时候去掉default关键字;如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写。d. 接口的子类(实现类) 要么重写接口中所有的抽象方法,要么是抽象类。
2024-10-19 15:26:25
691
原创 Java11 多态,包,final关键字,权限修饰符,object类
实际开发中:一般只用private和public , 成员变量私有 方法公开(如果方法在的代码是抽取其他方法中共性代码,这个方法一般也私有)定义一个方法时,使用父类型作为参数,可以接受所有的子对象,体现多态的拓展性与便利。b.特点:需要通过static关键字修饰,睡着类的加载二加载,并且自动触发,用来控制一个成员能够被访问的范围的,可以修饰变量、方法、构造方法、内部类。在多态的形式下,右边对象可以实现解耦合,便于拓展和维护。1.局部方法块:写在方法里面的局部代码块 提前结束变量的生命周期。
2024-10-18 21:43:20
710
原创 java 10 static、静态初始化程序、继承
字类可以在父类的基础上,增加其他的功能,使子类更加强大;非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和成员方法;在继承体系中,子类出现了和父类一模一样的方法声明,我们就称子类这个方法是重写的方法;,再执行自己(子类在初始化的时候,可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据)当类与类之间,存在相同的内容,并且满足子类是父类的一种,就可以考虑使用继承来优化代码。非私有的成员方法可以被继承使用,私有成员方法不会被添加到虚方法表中,所以不可以被继承。
2024-10-13 15:26:10
1716
原创 java08 面向对象(构造方法,对象内存图,对象清除与垃圾回收)
针对每一个私有化的变量成员,都为其提供一个get和set的方法,set方法给成员变量赋值(不需要返回值,需要形参),get方法对外提供成员变量的值(需要返回值,返回值类型与成员类型一致,不需要形参)b.一个Java文件中可以定义多个class类,且只能有一个类是public修饰的,而且public修饰的类名必须是代码文件,类:是对象共同特征的描述,抽象的 对象:是真实存在的具体的东西,具体的 比如:学生和小明 在Java中必须先设计类,才能获得对象。c.成员变量的完整定义格式。
2024-10-03 14:32:31
799
原创 Java07方法
break和return的区别:return跟循环没什么关系,跟方法有关,表示方法结束和返回结果,如果执行到了return,那么整个方法全部结束,里面的循环也会结束;参数类型或者参数个数(参数的类型,个数相同但是顺序不同是可以构成重载的,但是不建议),这些同名的方法,就构成了重载关系,与返回值无关。方法是程序中最小的执行单元,重复的代码,具有独立功能的代码可以抽取到方法中;b.方法的调用 (看到方法进入方法,执行完毕回到调用处))、方法调用中的参数叫做实参。,这些同名的方法有同种的功能,每个方法具。
2024-10-01 14:45:33
496
原创 java06数组
栈:方法运行时使用的内存,比如程序的主入口(main方法,开始时会进栈,代码执行完毕时会出栈。当两个数组指向同一个小空间的时候,其中一个数组中对小空间的值发生了变化,其他数组访问的时候就是修改后的结果了。数组容器在存储数据的时候,需要结合隐式转换考虑。(最好保持数组的数据类型和存储的数据的类型一致)只明确元素的个数,不明确具体的数值,使用动态初始化;在内存中的位置,直接打印数组名,结果会是数组的地址值。初始化,就是在内存中为数组容器开辟空间,并将数据存入容器的过程;a.数组的静态初始化。
2024-09-30 21:56:12
267
原创 java05 流程控制语句练习
b.创建对象 Random r = new Random();a.导包 import java.util.Random。c.生成随机数 int a = r.nextInt(a.让这个范围的头尾都减去一个值,使其从0开始。c.最终的结果x再整体加上第一步减去的值。b.将修改之后的范围尾巴得到x。2.输入一个数,返回它的平方根(只保留整数)二.跳转控制语句 (和C语言一样):跳过本次循环,继续执行下次循环。无限循环下面的代码永远执行不到。3.do ...while语句。
2024-09-28 20:34:17
146
原创 Java04运算符、流程控制语句
执行过程:小括号里面的表达式会与下面的每一个case匹配,如果匹配上了就执行语句体,如果发现了berak就结束整个语句,!,这个+时字符串连接符,而不是算术运算符,会将前后的数据进行拼接,产生一个新的字符串(不是只有两端都是字符串的时候才会产生新的字符串,如果把一个取值范围大的数值,赋值给取值范围小的数值,是不允许直接赋值的,如果一定要这么操作,就要加入强制转换 不是自动的,需要代码;所有的都为假,就执行语句体n+1;,依次与case后面的值相比较,如果有对应的值,就会执行相应的语句,执行过程中,遇到。
2024-09-28 18:06:30
1637
原创 Java03 数据类型,标识符,键盘输入
long (如果要定义long类型的变量,在数据值的后面需要加一个L为后缀,建议使用大写)他们的取值范围不一样,内存占用也不一样。float(定义float类型变量的时候,数据值后面需要加一个F作为后缀)、标识符由多个单词组成的时候,每个单词的首字母大写:GoodStudent。a.由数字、字母、下划线和美元符号组成,但是不能以。1.导包——找到Scanner这个类在哪 (书写在类定义的上面)(sc是变量名,可以改变,其他的都不可以改变)(只有i是变量民可以改变,其他都不可以改变)b.大驼峰命名法——
2024-09-27 14:04:07
129
原创 Java 02 注释,关键字,字面量,变量
系数:每一位上的数 基数:当前的进制数 权:从右往左,依次为0 1 2 3 4 5 6……十进制转为二进制:不断除以基数,得到余数,知道商为0,再将余数倒着拼接起来即可。6.空类型:值为null 它不能直接被打印,如果要打印,只能是字符串形式。的长度补齐到8,或者8的整数倍,最少补一个空格,最多补8个空格。十六进制:由0~9组成,a~f组成,代码以0x开头。3.字符串类型:用双引号括起来的内容,"Hello",""4.字符类型:用单引号括起来的,内容。
2024-09-26 15:45:33
315
原创 JAVA01,Java程序的类型
是Java的开发工具包,包含3个部分;JVM虚拟机:Java运行程序的地方 核心类库:Java已经写好的东西,可以直接用 开发工具:javac(编译)、Java(运行)、jdb……a.java->a.class 编译(cmd窗口输入 javac a.java)是Java的运行环境,包含了JVM、核心类库、运行工具。a.class运行 (cmd窗口输入 java a)JDK包含了JRE,JRE包含了JVM。4.如何运行Java程序。
2024-09-26 14:13:23
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人