当前位置: 首页 > news >正文

Java基础复习-上

运算

从键盘上获取数据:

Scanner sc = new Scanner(System.in);
int number = sc.nextInt();

八大基本数据类型:

byte,short,int,long,float,double,boolean,char

字符串相加:

ASCII编码表:

字符相加:

会先根据ASCII查询对应的数字然后再计算

赋值运算符

关系运算符

 逻辑运算符

运算符左右两边都会执行

短路逻辑运算符

运算符左右两边不一定都执行

三元表达式

流程控制

switch

利用大括号省略break

如果只有一句可以把大括号也省略:jdk12 

数组

 

数组的内存分布

Java内存分布

简单的方法

数组内存

通过new关键字创建出来的对象都是在堆里

方法

方法的内存

引用数据类型

基本数据类型

小结

传递基本数据类型的数据时传递的是数值本身,方法内修改这个值原来的值不会改变

传递引用数据类型的数据时传递的数据的地址值,方法内修改这个地址内的数据后,原来的值会发生改变

二维数组

 二维数组内存图

面向对象

对象的内存图

一个对象的内存图

两个对象的内存图

两个引用指向同一个对象

this的内存原理

成员变量和局部变量

   键盘录入

字符串操作

字符串创建

String字符串内存

栈和方法相关,那个方法执行对应的方法就进栈,执行结束就出栈

堆和对象相关,通过new关键字创建出来的对象都在堆中

方法区用来存放不同Java文件的class文件

字符串采用直接赋值的方式(String str = "123")这种方式,创建出来的字符串是在堆中的StringTable(串池)中

jdk7以后,将这个StringTable(串池)放到堆内存中,jdk7以前他是在方法区

所以,采用直接赋值的方式,是可以复用的,节省了内存

如果使用new关键字搭配构造方法创建字符串,这样是直接在堆中开辟一块空间来使用

字符串的比较

示例:

字符串比较(equals和equalsIgnoreCase)

我们使用Scanner的next方法获取的字符串在底层是使用new关键字创建出来的

遍历字符串

char类型字符比较

字符串截取

字符串替换

StringBuilder

StringJoiner

StringBuilder提高效率原理图

StringBuilder可以使用.capacity()方法来查看这个数组的容量

集合

ArrayList

基本数据类型-包装类

static

static内存图

静态变量是随着类的加载而加载的,优先于对象的出现

这里的工具类,写一个私有的构造方法,其他地方就没办法new这个工具类的实例了

三大特性

继承

 

1、父类的构造方法子类是不能继承的

2、父类的成员变量无论是私有还是非私有子类都是可以继承的

3、父类中私有的成员变量子类继承后是不能直接使用的,需要通过对应的get和set方法来使用

内存图

使用public修饰变量:

使用private修改变量:

方法的重写

多态

多态的特点

多态的优势和弊端

包机制

final

权限修饰符

代码块

静态代码块

抽象类

抽象类需要有继承关系,子类需要实现父类中的抽象方法

接口

接口和接口之间可以继承,并且可以多继承

上面的不加static的私有方法是给本类中默认的方法使用,下面带static的是给本类中静态方法使用的

接口的多态

适配器模式

内部类

成员内部类

成员内部类如果使用private修饰,那么在外部是无法直接创建这个内部类的。解决方案:在外部类提供创建这个内部类的方法

Java内存分析工具

静态内部类

局部内部类

匿名内部类

常用API

Math

System

Runtime

Object和Objects

浅克隆

深克隆

Objects

BigInteger

BigInteger底层原理:将字符串数字转成对应的二进制补码,然后分割,没32位为一组,再将每组都转成对应的十进制,然后将所有的十进制数存储到一个mag数组中,用一个signum代表数字的正负。

BigDecimal

1、直接在括号里面传递double类型的数据时,会出现不可预见的问题

2、使用传递字符串的形式可以避免上述不精确的问题

BigDecimal在底层,将字符串中的每个字符获取出来,然后将其转成对应的ASCII码,然后放到数组中(包括小数点,正负号)。

正则表达式

可以去帮助文档查询,API帮助文档搜索Pattern

可以使用idea中插件:AnyRule来找对应的正则表达式

时间

Date

SimpleDateFormat

Calendar日历

jdk8新增的时间类

包装类

Integer的静态方法valueOf方法在底层会默认创建-128-127的Integer对象,使用的时候直接返回不会重新创建 

       

算法

查找算法

排序算法

递归算法

代码实现:

    //    冒泡排序public static int[] sort1(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}return arr;}//    选择排序public static int[] sort2(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}return arr;}//    插入排序public static int[] sort3(int[] arr) {for (int i = 1; i < arr.length; i++) {int j = i;while (j > 0 && arr[j] < arr[j - 1]) {int temp = arr[j];arr[j] = arr[j - 1];arr[j - 1] = temp;j--;}}return arr;}//    快速排序public static void sort4(int[] arr, int start, int end) {if (start >= end) {return;}int i = start;int j = end;int pivot = arr[start];while (i < j) {
//            j向左移动,找比基准数小的数while (i < j && arr[j] >= pivot) {j--;}
//            i向右移动,找比基准数大的数while (i < j && arr[i] <= pivot) {i++;}
//            交换i和j位置上的数字if (i < j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}
//        将基准数归位arr[start] = arr[i];arr[i] = pivot;
//        递归调用快速排序sort4(arr, start, i - 1);sort4(arr, i + 1, end);}

Arrays

//        o1-o2:升序,o2-o1:降序Arrays.sort(arr,(o1,o2) -> o2 - o1);System.out.println(Arrays.toString(arr));

Lambda表达式

//        字符串比较String str1 = "abc";String str2 = "def";
//        负数:str1 < str2
//          0:str1 == str2
//        正数:str1 > str2int i = str1.compareTo(str2);System.out.println(i);
http://www.dtcms.com/a/533992.html

相关文章:

  • 长沙网站改版西安企业建站系统模板
  • 龙岩网站优化个人做网站好吗
  • 无锡网站托管国产一级a做爰片免费网站
  • 巨野住房和城乡建设局网站wordpress多站共享授权码
  • 哪些网站可以做免费广告推广有哪些建设工程类网站
  • 禹城有做网站常见网络营销工具
  • 如何做彩票网站的源码可以做游戏的网站有哪些
  • 龙元建设集团股份有限公司网站地址网站设计素材网站
  • 苏州基础网站建设音乐播放网站开发pc端
  • 多线程之屏障(Barrier)
  • Matplotlib 安装指南
  • 155.最小栈
  • 网站开发和移动开发成都市房产信息网
  • 乐平市建设局网站精品课程网站建设设计方案
  • 厦门网站建设方案服务公司网站开发建设什么会计科目
  • 深圳网站建设相关推荐wordpress启用主题
  • 为什么360极速浏览器X新建标签页总在所有标签页的最右侧打开?用键盘Ctrl+T新建标签页总在所有标签页最右侧打开解决办法。
  • 中国建设银行网站登陆安徽百度关键词优化
  • 德州网站开发培训网站策划专员招聘
  • 想找个人做网站广州微网站建设
  • 南通e站网站建设外国人在中国注册公司需要什么条件
  • 婚纱摄影网站开题报告河北黄页网
  • 网站 色调企业网站做多大尺寸
  • 人工智能学习中深度学习之python基础之高阶函数
  • 网站前台乱码2022最新永久地域网名
  • 备案网站可以做影视站网站开发中视屏怎样编辑到网页上
  • 株洲网站制作公司在哪里郑州网络推广广告公司
  • 做动图的网站知乎微网站站点名称
  • 提示词类型与示范学习机制(附 Qwen 模型实战代码)
  • 【016】Dubbo3从0到1系列之时间轮