Java基础重温巩固

news2024/11/28 19:06:23

方法

  • 方法与方法之间是平级关系,不能嵌套
  • return表示结束当前方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本数据类型和引用数据类型

基本数据类型:数据存储在自己的空间中

引用数据类型:数据存储在其他空间中,自己空间存储的是地址值

值传递

  • 传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值

在这里插入图片描述
在这里插入图片描述

  • 要有new才会有堆内存
  • 引用类型,传递的是地址值,形参的改变,影响实际参数的值
    在这里插入图片描述

自动拆装箱

  • 装箱(boxing)将 基本数据类型 转换成 包装类
  • 拆箱(unboxing)将 包装类 转换成 基本数据类型
  • 自动装箱将 基本数据类型 自动转换成 包装类
  • 自动拆箱将 包装类 自动转换成 基本数据类型
// 自动装箱
Integer num1 = 6;
// 自动拆箱
int num2 = num1;

重载

  • 同一个类中方法名相同参数不同的方法。与返回值无关

    • 参数不同,个数不同,类型不同,顺序不同
  • java虚拟机会根据不同的参数来区分同名的方法

构造方法

  • 构造方法也叫构造器,构造函数
  • 作用:创建对象给变量赋值,初始化
  • 创建一次对象,构造方法就会被调用一次

特点:
1.方法名与类名相同,大小写也要一致
2.没有返回值类型,连void都没有
3.没有具体的返回值 (不能由retrun带回结果数据)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Java内存

在这里插入图片描述
在这里插入图片描述

成员变量和局部变量

在这里插入图片描述
在这里插入图片描述

内部类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.什么是内部类?

  • 写在一个类里面的类就叫做内部类

    2.什么时候用到内部类?

    • B类表示的事物是A类的一部分,且B单独存在没有意义比如: 汽车的发动机ArrayList的选代器人的心脏等等
  • 内部类的分类

在这里插入图片描述

匿名内部类

在这里插入图片描述

  • 为了避免一次调用就要创建一个类去继承父类
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

lambda表达式

  • @FunctionalInterface接口加了这个注解不报错,就是函数式接口,可以使用lambda表达式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
package com.liang.lambda;

import java.util.Arrays;
import java.util.Comparator;

public class lambdaDemo {
    public static void main(String[] args) {
        //lambda表达式
        Integer[] arr = {21,3,4,5,67,8,9};
//        Arrays.sort(arr, new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o1-o2;
//            }
//        });
        //lambda完整格式
//        Arrays.sort(arr,(Integer o1, Integer o2)->{
//                return o1-o2;
//        });
        //lambda省略写法
        Arrays.sort(arr,( o1, o2)-> o1-o2);
        System.out.println(Arrays.toString(arr));
    }
}

在这里插入图片描述

this

  • this就是找上级代码执行的内容

  • 获取值就近原则

    在这里插入图片描述

static

  • static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量

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

  • 静态变量是类共享的,谁要用谁就拿
    在这里插入图片描述
    在这里插入图片描述

  • 类.方法调用工具类

在这里插入图片描述
在这里插入图片描述

  • 静态方法里面没有this,不能调用非静态的成员变量
  • 非静态方法里面,有个隐藏的this
  • 静态会存在堆内存

总结:

  • 静态方法中没有this关键字。

  • 静态方法中,只能访问静态。

  • 非静态方法可以访问所有。

  • 静态方法只能调用和访问静态
    在这里插入图片描述

  • 静态优先于对象加载

在这里插入图片描述
在这里插入图片描述

增强for遍历

  • 修改增强for中的变量,不会改变集合中原本的数据
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

排序算法

冒泡排序

  • 冒泡排序:相邻的数据两两比较,小的放前面,大的放后面

在这里插入图片描述

  • idea批量改变字母,选中需要修改的字母shit+f6改成你对应的
    public static void main(String[] args) {
        //冒泡排序:相邻的数据两两比较,小的放前面,大的放后面
        int[]  arr = {1,5,4,2,3};
        //外循环: 表示我要执行多少轮如果有n个数据,那么执行n - 1 轮
        for (int i = 0; i < arr.length-1; i++) {//0 1 2 3
            //内循环: 每一轮中我如何比较数据并找到当前的最大值
            // -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;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }

    }

选择排序

  • 从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较小的放前面,大的放后面,以此类推。
    在这里插入图片描述
    public static void main(String[] args) {

//        选择排序:
//        1,从@索引开始,跟后面的元素一一比较。
//        2,小的放前面,大的放后面。
//        3,第一次循环结束后,最小的数据已经确定
//        4,第二次循环从1索引开始以此类推。

        //选择排序
        int[]  arr = {10,5,4,2,3};

        //最终代码:
        //外循环: 几轮
        //i:表示这一轮中,我拿着哪个索引上的数据跟后面的数据进行比较并交换
        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;
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");

        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解Windows系统安装TensorRT

目录 下载TensorRT安装TensorRT测试 TensorRT 是 NVIDIA 推出的一款高性能神经网络部署引擎.Windows系统下TensorRT目前不能简单直接通过pip指令自动下载安装, 安装之前还需要提前安装好 CUDA 和 CUDNN. CUDA和CUDNN安装可参考: 详解 Windows系统下安装 CUDA 与 CUDNN. &…

ES6之Module:export、import

文章目录 前言一、export命令1.export2.export default&#xff08;默认暴露&#xff09; 二、import命令1.通用导入方式2.解析赋值导入方式 三、结果总结 前言 ES6之前&#xff0c;JavaScript语言一直没有模块&#xff08;Module&#xff09;体系&#xff0c;无法将一个大型程…

《计算机网络——自顶向下方法》精炼——3.5.1-3.5.4

人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定、冷静,学习如何从慌乱中找到生机。——席慕蓉 文章目录 TCPTCP协议概述报文段结构序号、确认号 超时问题计算RTT计算重传时间 可靠数据传输 TCP TCP协议概述 TCP是面向连接的协议&#xff0c;在…

nest笔记十一:一个完整的nestjs示例工程(nestjs_template)

概述 链接&#xff1a;nestjs_template 相关文章列表 nestjs系列笔记 示例工程说明 这个工程是我使用nestjs多个项目后&#xff0c;总结出来的模板。这是一个完整的工程&#xff0c;使用了yaml做为配置&#xff0c;使用了log4js和redis和typeorm&#xff0c;sawgger&#…

Less和sass安装及使用

CSS预处理器 由来 CSS本身不是一种编程语言。你可以用它开发网页样式&#xff0c;但是没法用它编程。换句话说&#xff0c;CSS基本上是设计师的工具&#xff0c;不是程序员的工具。它并不像其它程序语言&#xff0c;比如说JavaScript等&#xff0c;有自己的变量、常量、条件语…

手把手教你验证upd与tcp“端口”开发策略

系列文章目录 文章目录 系列文章目录前言一、问题&#xff1f;二、验证网络策略步骤三、增强验证网络策略总结 前言 这篇文章&#xff0c;本意是让大家了解除了常用的telnet之外&#xff0c;在运维过程中&#xff0c;如果在服务器中未发现相关命令还可以借用像ssh、wget 等命令…

震惊!我的电脑居然中病毒了,快来看看我是如何解决的

打开电脑就自动跳转到http://www.exinariuminix.info/ 问题背景 今天刚打开电脑&#xff0c;然后电脑莫名奇妙就自动跳转到http://www.exinariuminix.info/网页&#xff1a; 联网后加载&#xff0c;它就自动重定向到一个莫名其妙的网站&#xff1a; 问题原因 出于好奇&#…

大数据Doris(二十四):Doris数据Insert Into导入方式介绍

文章目录 Doris数据Insert Into导入方式介绍 一、语法及参数 二、案例 三、注意事项 1、关于插入数据量 2、关于insert操作返回结果 3、关于导入任务超时 4、关于Session变量 5、关于数据导入错误 Doris数据Insert Into导入方式介绍 Doris 提供多种数据导入方案&…

SpringMVC执行原理

目录结构 pom.xml依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- https://mvnrepository.co…

【Java校招面试】实战面经(五)

目录 前言一、讲讲short数据类型&#xff0c;short s1 1; s1 s11;对不对&#xff1f;二、使用final关键字的好处三、如果String中重写equals不重写hashCode会出现什么问题&#xff1f;四、ConcurrentHashMap的get方法是不加锁的&#xff0c;如何保证线程安全&#xff1f;五、…

缓存存在的问题

文章目录 缓存问题缓存穿透引入解决方案 缓存雪崩缓存击穿 缓存问题 使用缓存时常见的问题主要分为三个&#xff1a;缓存穿透 、缓存雪崩、缓存击穿。 下面对其进行一一学习 缓存穿透 引入 定义&#xff1a;缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#…

20230521给coolpi4b开发板刷Android12和串口的使用

20230521给coolpi4b开发板刷Android12和串口的使用 2023/5/21 9:31 所需要的配件&#xff1a; 1、2.0mm转2.54mm的杜邦线母头2条&#xff08;2位一起的一条&#xff09; 2、串口板&#xff1a;CH340&#xff08;WIN7下使用&#xff09; 3、USB的公头-公头线 首先&#xff0c;欢…

微星MSI GE66 10SF-416RU电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板Intel HM470 处理器Intel Core i7-10875H 2.30GHz up to 5.10GHz已驱动 内存Kingston Fury Impact DDR4 2x16Gb 3200mhz已驱动 硬盘NT…

Redis介绍及Linux单机安装

1.Redis介绍 1.1.什么是Redis Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis是完全开源的&#…

OpenCV人脸识别QT上位机(含源码)

OpenCV Releases&#xff1a;4.6.0 开发平台&#xff1a;QT 6.4.0 编译环境&#xff1a;MSVC 2019 64bit 主要功能&#xff1a;1、预处理图片 2、生成CSV文件 3、生成识别器文件等功能。主要用于学习opencv的整个流程和实现一些简单的功能&#xff0c;比如识别指定的人脸并显…

安卓与串口通信-实践篇

前言 在上一篇文章中我们讲解了关于串口的基础知识&#xff0c;没有看过的同学推荐先看一下&#xff0c;否则你可能会不太理解这篇文章所述的某些内容。 这篇文章我们将讲解安卓端的串口通信实践&#xff0c;即如何使用串口通信实现安卓设备与其他设备例如PLC主板之间数据交互…

【计算机网络复习】第五章 数据链路层 1

数据链路层的作用 两台主机&#xff08;端到端&#xff09;之间的通信是依靠相邻的主机/路由器之间的逐步数据传送来实现 数据链路层实现相邻主机/路由器间的可靠的数据传输 网络层&#xff1a;主机-主机通信 数据链路层&#xff1a;点到点通信 数据链路层的主要功能 u 链路…

3R幸福法

3R幸福法 3R幸福法可以帮助我们《建立和谐亲密关系》 模型介绍 3R幸福法体现的是一个人被关注的完整逻辑&#xff1a; Reson-理由&#xff0c;关注缘起。不会让你想表达的感情看起来显得唐突&#xff0c;不会让对方和自己不好意思。Respond-反应&#xff0c;是关注影响。更多…

ROS 工作空间与功能包的创建(三)

执行命令&#xff1a; mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src/catkin_init_workspace echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc 效果&#xff1a; 输入命令查看添加成功了没有 tail ~/.bashrc 编译工程&#xff1a;执行命令 cd ~…

csdn文章markdown格式下载

前言 网上下载CSDN文章的方式多种多样&#xff0c;有的直接下载为pdf格式&#xff0c;有的利用python/java代码将文章下载为md格式&#xff0c;也有的用JavaScript下载文章&#xff0c;但下载的文章仅限于自己写的&#xff08;会介绍&#xff09;&#xff0c;这里也提供一种简单…