![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础学习
Frank---7
从JAVA转为C++的小菜鸡一枚,希望和大家共同进步!
展开
-
JAVA---变量的命名规范
Java基础原创 2023-02-02 13:09:40 · 116 阅读 · 0 评论 -
一文让你秒懂字符编码
字符编码文字是如何显示的 128 64 32 16 8 4 2 1 65 0 1 0 0 0 0 0 1108 0 1 1 0 1 1 0 1148 0 0 1 1 0 0 0 0 二进制 ——》十进制 9 A 1101101 l 1101101 e x 11011011101101 设定为,每8个2进制位代表一个字符 论断句的重要性 8bit = 1bytes 字节 ,代表 1个字符 1024字节 = 1Kb 1024个字符 1024Kb = 1Mb 1024原创 2022-02-06 19:28:33 · 616 阅读 · 0 评论 -
数组元素的默认值
数组元素的默认值数组元素是整型:0数组元素是浮点型:0.0数组元素是char型:0或’\u0000’,而非’0’数组元素是boolean型:false数组元素是引用数据类型:nulleg非数组元素必须初始化后才能进行使用...原创 2021-10-21 10:05:36 · 699 阅读 · 1 评论 -
String与StringBuffer、StringBuilder之间的转换
原创 2021-10-20 10:28:52 · 286 阅读 · 2 评论 -
原码,反码,补码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)...原创 2021-10-18 11:06:57 · 256 阅读 · 0 评论 -
数组与集合相互转换
数组Array与集合List相互转化有两种方式,一种是自己手动转化,一种是直接使用集合或数组自带的方法转化数组转化集合:方法一:手动转化List<String> list= new ArrayList<>();String[] array = new String[] {"hello", "hi", "nihao"};for (int i = 0; i < array.length; i++) { list.add(array[i]);}方法二:使用集合原创 2021-10-09 00:18:11 · 4940 阅读 · 0 评论 -
❤️ 爆肝一个月!JAVA零基础入门总结(下)❤️
程序、进程、线程程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程(thread)进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执行多个线程,就原创 2021-09-14 23:32:37 · 809 阅读 · 0 评论 -
❤️ 爆肝一个月!JAVA零基础入门总结(上)❤️
标识符与命名规范标识符Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符技巧:凡是自己可以起名字的地方都叫标识符。定义合法标识符规则由26个英文字母大小写,0-9 ,_或$组成数字不可以开头。不可以使用关键字和保留字,但能包含关键字和保留字。Java中严格区分大小写,长度无限制。标识符不能包含空格。练习:miles, Test, a++, --a, 4#R, $4, #44, apps, class, public, int, x, y, radiusJava中的名称命原创 2021-09-14 23:29:15 · 3463 阅读 · 0 评论 -
LinkedHashSet VS HashSet
LinkedHashSet的使用LinkedHashSet作为HashSet的子类,在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个数据和后一个数据。优点:对于频繁的遍历操作,LinkedHashSet效率高于HashSet原创 2021-08-30 17:50:23 · 520 阅读 · 2 评论 -
List实现类中调用下标删除VS调用元素删除
原创 2021-08-30 15:13:59 · 228 阅读 · 0 评论 -
double类型进行比较排序
不用两个double直接进行强转是为了防止精度的损失 @Override public int compareTo(Object o) {// System.out.println("**************"); if(o instanceof Goods){ Goods goods = (Goods)o; //方式一: if(this.price > goods.price)原创 2021-08-26 10:39:33 · 595 阅读 · 2 评论 -
线程优先级
MAX_PRIORITY:10MIN _PRIORITY:1NORM_PRIORITY:5 -->默认优先级2.如何获取和设置当前线程的优先级:getPriority():获取线程的优先级setPriority(int p):设置线程的优先级说明:高优先级的线程要抢占低优先级线程cpu的执行权。但是只是从概率上讲,高优先级的线程高概率的情况下被执行。并不意味着只有当高优先级的线程执行完以后,低优先级的线程才执行。...原创 2021-08-18 19:10:27 · 306 阅读 · 1 评论 -
并行与并发
**并行:**多个CPU同时执行多个任务。比如:多个人同时做不同的事。**并发:**一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事。原创 2021-08-18 19:09:56 · 181 阅读 · 0 评论 -
程序、进程、线程
程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程(thread)进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执行多个线程,就是支持多线程的线原创 2021-08-18 19:09:23 · 200 阅读 · 0 评论 -
线程创建两种方式
方式一(继承于Thread类)创建一个继承于Thread类的子类重写Thread类的run() --> 将此线程执行的操作声明在run()中创建Thread类的子类的对象通过此对象调用start()package com.wdl.java;//1. 创建一个继承于Thread类的子类class MyThread extends Thread { //2. 重写Thread类的run() @Override public void run() {原创 2021-08-18 19:08:25 · 235 阅读 · 0 评论 -
单例模式懒汉式(线程安全写法)
package com.atguigu.java1;/** * 使用同步机制将单例模式中的懒汉式改写为线程安全的 * * @author shkstart * @create 2019-02-15 下午 2:50 */public class BankTest {}class Bank{ private Bank(){} private static Bank instance = null; public static Bank getInstance原创 2021-08-18 19:07:28 · 321 阅读 · 0 评论 -
线程安全问题解决
方式一(同步代码块)synchronized(同步监视器){//需要被同步的代码}说明:1.操作共享数据的代码,即为需要被同步的代码。 -->不能包含代码多了,也不能包含代码少了。2.共享数据:多个线程共同操作的变量。比如:ticket就是共享数据。3.同步监视器,俗称:锁。任何一个类的对象,都可以充当锁。要求:多个线程必须要共用同一把锁。补充:在实现Runnable接口创建多线程的方式中,我们可以考虑使用this充当同步监视器。package com.atguigu.java;.原创 2021-08-18 19:06:53 · 266 阅读 · 0 评论 -
用idea添加一个模块
第一步第二步原创 2021-08-17 20:37:32 · 650 阅读 · 0 评论 -
教你一招快速打开idea的秘诀
大家根据电脑系统的位数,选择 32 位的 VM 配置文件或者 64 位的 VM 配置文件32 位操作系统内存不会超过 4G,所以没有多大空间可以调整,建议不用调整了64 位操作系统中 8G 内存以下的机子或是静态页面开发者是无需修改的。64 位操作系统且内存大于 8G 的,如果你是开发大型项目、Java 项目或是 Android 项目,建议进行修改,常修改的就是下面 3 个参数:-Xms128m,16 G 内存的机器可尝试设置为 -Xms512m(设置初始的内存数,增加该值可以提高 Jav..原创 2021-08-17 20:37:08 · 894 阅读 · 0 评论 -
用户自定义异常类
如何自定义异常类?继承于现有的异常结构:RuntimeException 、Exception提供全局常量:serialVersionUID提供重载的构造器package com.atguigu.java2;/* * 如何自定义异常类? * 1. 继承于现有的异常结构:RuntimeException 、Exception * 2. 提供全局常量:serialVersionUID * 3. 提供重载的构造器 * */public class MyException extend原创 2021-08-17 15:47:32 · 306 阅读 · 0 评论 -
异常体系结构
常见异常异常体系结构java.lang.Throwable|-----java.lang.Error:一般不编写针对性的代码进行处理|-----java.lang.Exception:可以进行异常的处理|------编译时异常(checked)|-----IOException|-----FileNotFoundException|-----ClassNotFoundException|------运行时异常(unchecked,RuntimeException)|-----NullPo原创 2021-08-17 15:47:05 · 192 阅读 · 0 评论 -
异常处理机制
抓抛模型过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。 并将此对象抛出。 一旦抛出对象以后,其后的代码就不再执行。 关于异常对象的产生:① 系统自动生成的异常对象 ② 手动的生成一个异常对象,并抛出(throw)过程二:"抓":可以理解为异常的处理方式:① try-catch-finally ② throws方式一(try-catch-finally)try-catch-final原创 2021-08-17 15:46:30 · 195 阅读 · 0 评论 -
内部类的使用
类的内部成员之五:内部类1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类2.内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)3.成员内部类: 一方面,作为外部类的成员: >调用外部类的结构 >可以被static修饰 >可以被4种不同的权限修饰 另一方面,作为一个类: > 类内可以定义属性、方法、构造器等原创 2021-08-17 10:01:59 · 269 阅读 · 0 评论 -
Java8中接口的新特性
知识点1:接口中定义的静态方法,只能通过接口来调用。 CompareA.method1();知识点2:通过实现类的对象,可以调用接口中的默认方法。如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法 s.method2();知识点3:如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法。–>类优先原则知识点4:如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那原创 2021-08-17 10:00:50 · 265 阅读 · 0 评论 -
interface关键字
接口的使用1.接口使用interface来定义2.Java中,接口和类是并列的两个结构3.如何定义接口:定义接口中的成员 3.1 JDK7及以前:只能定义全局常量和抽象方法 >全局常量:public static final的.但是书写时,可以省略不写 >抽象方法:public abstract的 3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(略)4. 接口中不能定义构造器的!意味着接口不可以实原创 2021-08-17 10:00:07 · 199 阅读 · 0 评论 -
final关键字
final可以用来修饰的结构:类、方法、变量final 用来修饰一个类:此类不能被其他类所继承。比如:String类、System类、StringBuffer类final 用来修饰方法:表明此方法不可以被重写比如:Object类中getClass();final 用来修饰变量:此时的"变量"就称为是一个常量4.1 final修饰属性:可以考虑赋值的位置有:1.显式初始化、2.代码块中初始化、3.构造器中初始化4.2 final修饰局部变量:尤其是使用final修饰形参时,表明此形参是一个常.原创 2021-08-16 11:03:16 · 199 阅读 · 0 评论 -
对属性可以赋值的位置
对属性可以赋值的位置:①默认初始化②显式初始化/⑤在代码块中赋值③构造器中初始化④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值执行的先后顺序:① - ② / ⑤ - ③ - ④package com.atguigu.java3;public class OrderTest { public static void main(String[] args) { Order order = new Order(); System.out.println(order原创 2021-08-16 10:41:27 · 222 阅读 · 0 评论 -
main()方法
main()方法的使用说明:main()方法作为程序的入口main()方法也是一个普通的静态方法main()方法可以作为我们与控制台交互的方式。(之前:使用Scanner)原创 2021-08-15 20:02:36 · 262 阅读 · 0 评论 -
单例 (Singleton)设计模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。1. 所谓原创 2021-08-15 19:51:52 · 184 阅读 · 0 评论 -
static关键字
1.static:静态的2.static可以用来修饰:属性、方法、代码块、内部类3.使用static修饰属性:静态变量(或类变量) 3.1 属性,按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量) 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的 非静态属性时,不会导致其他对象中同样的属性值的修改。 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。原创 2021-08-15 18:59:41 · 201 阅读 · 0 评论 -
基本数据类型、包装类、String三者之间的相互转换
package com.wdl.day13;import org.junit.Test;/* * 包装类的使用: * 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征 * * 2.掌握的:基本数据类型、包装类、String三者之间的相互转换 * * * */public class WrapperTest { //String类型 --->基本数据类型、包装类:调用包装类的parseXxx(String s) @Test .原创 2021-08-15 13:25:24 · 239 阅读 · 0 评论 -
JUnit单元测试
1.选中当前工程 - 右键选择:build path - add libraries - JUnit 4 - 下一步2.创建Java类,进行单元测试。此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器3.此类中声明单元测试方法。此时的单元测试方法:方法的权限是public,没有返回值,没有形参4.此单元测试方法上需要声明注解:@Test,并在单元测试类中导入:import org.junit.Test;5.声明好单元测试方法以后,就可以在方法体内测试相关的代码。6.原创 2021-08-15 11:43:14 · 270 阅读 · 0 评论 -
toString()
Object类中toString()的使用:1. 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()2. Object类中toString()的定义: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }3. 像String、Date、File、包装类等都重写了Object类中的toString()方法。 使得在调用原创 2021-08-15 11:29:38 · 208 阅读 · 0 评论 -
Object类
java.lang.Object类1.Object类是所有Java类的根父类2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类3.Object类中的功能(属性、方法)就具有通用性。属性:无方法:equals() / toString() / getClass() /hashCode() / clone() / finalize()wait() 、 notify()、notifyAll()Object类只声明了一个空参的构造器...原创 2021-08-15 11:20:10 · 182 阅读 · 0 评论 -
== 和 equals() 区别
一、回顾 == 的使用:== :运算符1. 可以使用在基本数据类型变量和引用数据类型变量中2. 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同) 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体补充: **== 符号使用时,必须保证符号左右两边的变量类型一致。**二、equals()方法的使用:1. 是一个方法,而非运算符2. 只能适用于引用数据类型3. Object类中equals()的定义: pub原创 2021-08-15 11:08:10 · 231 阅读 · 0 评论 -
instanceof关键字
instanceof关键字的使用a instanceof A:判断对象a是否是类A的实例。如果是,返回true;如果不是,返回false。使用情境:为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型。如果 a instanceof A返回true,则 a instanceof B也返回true.其中,类B是类A的父类。...原创 2021-08-14 17:04:24 · 843 阅读 · 0 评论 -
三大特性之多态性
1.理解多态性:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)3.多态的使用:虚拟方法调用有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。总结:编译,看左边;运行,看右边。4.多态性的使用前提: ① 类的继承关系 ② 方法的重写...原创 2021-08-14 15:02:03 · 200 阅读 · 0 评论 -
super关键字
super关键字的使用1.super理解为:父类的2.super可以用来调用:属性、方法、构造器3.super的使用:调用属性和方法3.1 我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super."3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。3.3 特殊情况:当子原创 2021-08-14 13:36:45 · 850 阅读 · 0 评论 -
重写(override / overwrite)
方法的重写(override / overwrite)1.重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法。3. 重写的规定: 方法的声明: 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{ //方法体 } 约定俗称:子类中的叫重写的方法,父类原创 2021-08-14 11:59:46 · 1044 阅读 · 0 评论 -
三大特性之封装性
体现一Java中通过将属性声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:隐藏一个类中不需要对外提供的实现细节;使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;便于修改,增强代码的可维护性;体现二不对外暴露的私有方法体现三单例模式(将构造器私有化)体现四如果不希望类在包外被调用,可以将类设置为缺省的。...原创 2021-08-13 17:01:19 · 917 阅读 · 1 评论