Java基础
汐小旅Shiory
我怎么敢倒下,我身后空无一人。
展开
-
HashMap与ConcurrentHashMap简述
版本:JDK1.8针对put方法展开0、两者底层数据结构数组+链表+红黑树(JDK1.8新增)0.1、数组特点:查改快,增删慢。查改快:通过数组下标定位增删慢:增删会引起元素的移动0.2、链表特点:增删快,查改慢。增删快:节点之间的链接断开,进行元素的增删,之后在链接上即可查改慢:需要从链表头开始查。最大时间复杂度:T(m) = O(n);常数时间0.3、红黑树特点:接近于于平衡的二叉树。相对于链表降低时间复杂度,T(n) = O(logn);对数时间,由于计算机使用二进制的原创 2020-10-24 15:27:47 · 300 阅读 · 0 评论 -
权限修饰符
四种权限修饰符类及其所组成所使用的的常见修饰符修饰符权限修饰符:private,默认,protected,public 状态修饰符:static,final 抽象修饰符:abstract类权限修饰符:默认修饰符,public 状态修饰符:final 抽象修饰符用得最多是:public成员变量权限修饰符:private,默认,protected,publ...原创 2019-04-28 00:09:11 · 139 阅读 · 0 评论 -
this 和 super 关键字的区别和使用
具体请查看本博客中的继承:面向对象----继承原创 2019-04-27 16:10:06 · 215 阅读 · 0 评论 -
抽象类和接口的区别
成员区别抽象类成员变量:可以是变量,也可以是常量 构造方法:有 成员方法:可以是抽象的,也可以是非抽象的接口成员变量:只能是常量 构造方法:无 成员方法:只能是抽象的关系区别类与类:继承,单继承 类与接口:实现,单实现,多实现 接口与接口:继承,单继承,多继承设计理念区别抽象类:被继承体现的是:“is a ” 的关系,抽象类中定义的是该继承体系的共性功能接...原创 2019-04-27 21:30:22 · 120 阅读 · 0 评论 -
类与类、类与接口、接口与接口的关系
类与类:继承关系。只能是单继承,可以多层继承类与接口:实现关系。可以单实现,也可以多实现(多实现接口名之间用逗号隔开:如 class A implements 接口1,接口2,...{}),并且还可以在继承一个类的同时实现多个接口接口与接口:继承关系。可以单继承,也可以多继承...原创 2019-04-27 21:19:15 · 378 阅读 · 0 评论 -
接口
接口的概述从狭义的角度来说就是指Java中的interface 从广义的角度来说对外提供规则的都是接口接口特点接口用关键字interface表示:publicinterface 接口名() {}; 类实现接口用 implements 表示:class 类名 implements 接口名{} 接口不能实例化:接口实例化只能按照多态的方式。接口 接口名 = new 实现类(); 接...原创 2019-04-27 21:14:02 · 134 阅读 · 0 评论 -
代码块的概述和分类
1.代码块概述在Java中,使用{ }括起来的代码称为代码块2.代码块分类根据其位置和声明不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块3.常见代码块的应用局部代码块在方法中出现;限定变量的声明周期,及早释放,提高内存利用率构造代码块(初始化块)在类中方法外出现;多个构造函数方法中相同代码存放到一起,每次调用构造都执行,并且在构造方法前执行pub...原创 2019-04-25 00:09:11 · 303 阅读 · 0 评论 -
static关键字的特点以及注意事项
当一个类中的所有方法都是静态的,它就会私有它的构造方法。例如:Math类1.特点随着类的加载而加载 优先于对象存在 被类的所有对象共享使用场景:如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的可以通过类名调用其实它本身也可以通过对象名调用推荐使用类名调用静态修饰的内容一般称其为:与类相关的,类成员2.注意事项在静态方法中是没有this关键字的原...原创 2019-04-24 22:43:08 · 561 阅读 · 0 评论 -
面向对象思想概述
理解面向对象:面向对象是相对于面向的过程而言的。 面向过程和面向对象都是强调的一种思想。 面向过程:强调的是过程,也就是功能的行为。 面向对象:把功能封装进对象,强调具备了功能的对象。 面向对象是基于面向过程的。举例:把大象装进冰箱需要三步面向过程思想:强调的是过程,第一步、第二步......。对于调用者,每一步都需要自己实现。面向对象思想:强调的是对象,对象里...原创 2019-04-21 23:42:50 · 235 阅读 · 0 评论 -
面向对象----封装
1.概述封装是指隐藏对象的属性和实现细节,仅对外提供公共访问的方式2.封装好处隐藏实现细节,提供公共的访问方式 提高了代码的复用性 提高了安全性3.封装原则将不需要对外提供的内容都隐藏起来 把属性隐藏,提供公共方法对其访问4.封装和private关键字的应用把成员变量用private修饰 提供对应的getXxx()方法和setXxx()方法 private仅仅是封...原创 2019-04-21 23:44:25 · 213 阅读 · 0 评论 -
面向对象----继承(extends)
继承让类与类之间产生关系,子父类关系。public class 子类 extends 父类 {}好处提高了代码的复用性 提高了代码的维护性 让类与类之间产生了关系,是多态的前提弊端类的耦合性增强了开发原则:高内聚,低耦合内聚:就是程序自己完成某某件事的能力耦合:类与类之间的关系Java中继承的特点Java中只支持单继承,不支持多继承(一个儿子只能有一个爹)...原创 2019-04-21 23:45:04 · 435 阅读 · 1 评论 -
内部类
概述在类中定义类,类中的这个类就是内部类内部类的访问特点内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,必须创建对象:格式如下外部类名.内部类名 对象名 = 外部类对象.内部类对象Outer.Inner oi = new Outer().new Inner();//创建内部类对象成员内部类私有使用对外提供公共的访问方法,在这个公共的访问方法中创...原创 2019-04-28 01:55:08 · 127 阅读 · 0 评论 -
System类
public class TestJavaSe { public static void main(String[] args) { new Demo(); //运行垃圾回收器,finalize()方法相当于保洁阿姨,gc()方法相当于呼叫保洁阿姨过来清理垃圾 System.gc(); //exit(int status):终止当前正在运行的Ja...原创 2019-05-04 00:02:54 · 130 阅读 · 0 评论 -
Random类
public static void main(String[] args) { Random r1 = new Random(); //生成int取值范围内的随机数,有负有正,其他基本数据类型同理 int i = r1.nextInt(); System.out.println(i); //指定了种子,每次结果都一样 Random r2 = ...原创 2019-05-04 00:02:46 · 133 阅读 · 0 评论 -
Calendar类
Calendar概述日历类,是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。替代Date类获取Calendar实...原创 2019-05-04 00:03:59 · 2101 阅读 · 0 评论 -
DateFormat类与SimpleDateFormat类
DateFormat类的概述DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormatSimpleDateFormat类SimpleDateFormat类常用构造方法常用有参数的构造父类DateFormat中两个常用方法,子类继承 public sta...原创 2019-05-04 00:03:48 · 386 阅读 · 0 评论 -
Date类
概述:类 Date 表示特定的瞬间,精确到毫秒。Date类是util包下的构造方法public Date() public Date(long date)成员方法public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 public void setTimr(long time):设置此 ...原创 2019-05-04 00:03:41 · 137 阅读 · 0 评论 -
BigDecimal类
不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。概述:由于在运算的时候,float类型和double很容易丢...原创 2019-05-04 00:03:20 · 182 阅读 · 0 评论 -
BigInteger类
不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。概述:可以让超过Integer范围内的数据进行运算...原创 2019-05-04 00:03:11 · 192 阅读 · 0 评论 -
Math类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。常用成员方法public static int abs(int a)public static double ceil(double a)public static double floor(double a)public static int max(int a,int b)public stati...原创 2019-04-24 23:33:00 · 563 阅读 · 0 评论 -
Java API
API:Application Programming Interface:应用程序接口Java API:就是Java提供给我们使用的类,这些类将底层实现封装了起来原创 2019-05-01 02:37:01 · 126 阅读 · 0 评论 -
Object类
类层次结构的根类,所有的类都直接或者间接继承自该类hashCode方法public int hashCode() 返回该对象的哈希码值,默认情况下,该方法会根据对象的地址来计算 不同对象的哈希码值一般来说不会相同,但是,同一个对象的哈希码值肯定相同getClass方法public final Class getClass() 返回此对象的运行时类 可通...原创 2019-05-01 03:42:02 · 122 阅读 · 0 评论 -
==号和equals()方法的区别
共同点:都可以作比较 返回值都是boolean区别:==号是一个比较运算符,既可比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值 equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,也是比较地址值,重写...原创 2019-05-01 04:04:46 · 323 阅读 · 0 评论 -
面向对象----多态
多态的概述事物存在的多种形态多态的前提要有继承关系 要有方法重写 要有父类引用指向子类对象public class TestJavaSE { public static void main(String[] args) { Father s1 = new Son();//父类引用指向子类对象 s1.print(); }}class Father { ...原创 2019-04-21 23:45:50 · 133 阅读 · 0 评论 -
面向对象----抽象
抽象的概述抽象就是看不懂的抽象类的特点抽象类和抽象方法必须用abstract关键字修饰abstract class 类名{ }public abstract 返回值类型 方法名() {}抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口 抽象类不能实例化抽象类如何实现实例化:按照多态的方式,由具体的子类实例化。其实抽象类也是多态的一种,抽象类多态抽象类的子类...原创 2019-04-21 23:46:26 · 320 阅读 · 0 评论 -
数组冒泡排序
冒泡排序:轻的上浮,沉的下降相邻两个元素两两比较,大的元素往后放,第一次完毕,最大值出现在最大索引处实现代码如下public static void main(String[] args) { int[] arr = {33,77,66,11,22,55,44}; //外循环控制轮数,内循环控制每一轮比较的次数 for (int i = 0; i < arr.len...原创 2019-05-03 00:11:03 · 146 阅读 · 0 评论 -
数组操作----基本查找(根据元素找索引)
例:查找指定元素第一次在数组中出现的索引 public static void main(String[] args){ int[] arr = {11,22,33,44,55,66,77}; Scanner sc = new Scanner(System.in); System.out.println("请输...原创 2019-04-21 20:23:19 · 1942 阅读 · 0 评论 -
数组操作----查表法(根据索引找元素)
例:根据键盘录入索引,查找对一个的星期 public static void main(String[] args){ char[] arr = {' ','一','二','三','四','五','六','日'}; Scanner sc = new Scanner(System.in); System.out...原创 2019-04-21 20:01:42 · 770 阅读 · 0 评论 -
数组操作----获取最值
public static void main(String[] args){ int[] arr = {66,22,77,11,55}; int max = arr[0];//定义一个变量,存储数组的第一个元素的值 for (int i = 1; i < arr.length; i++) {//从数组的第二个...原创 2019-04-15 22:01:33 · 207 阅读 · 0 评论 -
数组中基本数据类型默认的初始化值
整数类型:byte、short、int、long默认初始化值都是0 浮点类型:float、double默认初始化值都是0.0 布尔类型:boolean默认初始化值是false 字符类型:char默认初始化值是'\u0000'char在内存中占两字字节,是16个二进制位。\u0000,每个0其实就是代表的是16进制的0,那么四个0就是代表16个二进制位...原创 2019-04-15 20:07:29 · 2875 阅读 · 0 评论 -
数组操作----两个常见问题
一维数组初始化格式:动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];静态初始化:数据类型[] 数组名 = {元素1,元素2,元素3,...,元素n};二维数组初始化格式:动态初始化:数据类型[][] 数组名 = new 数据类型[数组长度][数组长度];静态初始化:数据类型[][] 数组名 = {{元素1,...,元素n},{元素1,...,元素n},......原创 2019-04-15 21:34:54 · 291 阅读 · 0 评论 -
数组操作----遍历
数组的遍历:就是依次输出数组中每一个元素数组的属性:arr.length数组的长度数组的索引:数组最小索引0,最大索引arr.length - 11.一维数组遍历 public static void main(String[] args){ int[] arr = {11,22,33,44,55}; for (int i ...原创 2019-04-15 21:42:59 · 225 阅读 · 0 评论 -
数组操作----反转
反转:就是把元素对调最快的方式就是首尾交换 public static void main(String[] args){ int[] arr = {11,22,33,44,55}; //反转数组 for (int i = 0; i < arr.length/2; i++) { ...原创 2019-04-21 19:48:08 · 189 阅读 · 0 评论 -
集合简介
集合的由来数组的长度是固定的,当添加元素超过了数组的长度时需要对数组重新定义,很麻烦。因此,Java内部提供了集合类,能存储任意对象,长度时可以改变的,随着元素的增加而增加,随着元素的减少而减少集合的继承体系1.单列集合继承体系2.双列集合继承体系待续...原创 2019-05-17 19:55:39 · 220 阅读 · 0 评论 -
数组选择排序
选择排序:从0索引开始,依次和后面的元素比较,小的往前放,第一次完毕,最小值出现在最小索引处实现代码如下: public static void main(String[] args) { int[] arr = {33,77,66,11,22,55,44}; //外循环控制轮数,内循环控制每一轮比较的次数 for (int i = 0; i < arr.leng...原创 2019-05-03 00:11:09 · 825 阅读 · 0 评论 -
数组二分查找
二分查找:查找元素对应的索引前提:数组有序注意事项:如果数组无序,就不能使用二分查找。因为数组无序,而我们进行了排序,此时排序的时候已经改变了原始的元素索引实现代码如下 public static void main(String[] args) { int[] arr = {11,22,33,44,55,66,77}; //初始化索引和要查找的元素 ...原创 2019-05-03 00:11:19 · 235 阅读 · 0 评论 -
针对数组进行操作的工具类Arrays
Arrays:针对数组进行操作的工具类 提供了排序、查找等功能,更多请查看API帮助文档数组转String查看底层源码:源码的写法和思路可以使用到项目中给项目做优化数组排序二分法查找前提:数组有序注意:如果找不到这个要查找的值,就会返回:-插入点-1注意:查看底层源码:...原创 2019-05-03 00:11:31 · 216 阅读 · 0 评论 -
类与对象的概述
1.描述现实世界事物一般是通过属性和行为来描述。属性:事物的描述信息(事物身上的名称,例如:动物的腿、毛色等) 行为:事物能做什么(事物身上的动词,例如:动物吃、跑等)2.类类是Java中最基本的单位。是一组相关属性和行为的集合。定义类就是抽取某一类事物相同的属性(成员变量)和行为(成员方法)进行封装(例如动物类:属性有--腿、毛色等,行为---有吃、跑等)。3.类和对象的概念...原创 2019-04-22 00:22:51 · 284 阅读 · 0 评论 -
成员变量和局部变量的区别
1.在类中的位置不同成员变量:在类中、方法外 局部变量:在方法定义中或者方法声明上2.在内存中的位置不同成员变量:在堆内存(成员变量属于对象的,对象进堆内存) 局部变量:在栈内存(局部变量属于方法的,方法进栈内存)3.生命周期不同成员变量:随着对象的创建而创建,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失4.初始化值不同成员变量:有默认...原创 2019-04-22 00:37:17 · 166 阅读 · 0 评论 -
匿名对象
1.匿名对象就是没有名字的对象2.匿名对象的使用场景匿名对象调用方法仅仅只调用一次的时候好处:节省代码注意:调用多次的时候不适合。匿名对象调用完毕就是垃圾,可以被垃圾回收器回收匿名对象可以作为实际参数传递场景举例:public class Car { String color; //颜色 int num; //轮胎数 public void ru...原创 2019-04-22 00:53:21 · 115 阅读 · 0 评论