java项目总结2

news2024/12/23 3:20:29

3.了解Java的内存分配

4.重载

定义:在一个类中,有相同名的,但是却是不同参数(返回类型可以不一样

重载的优点:

1.减少定义方法时使用的单词

2.减少调用方法时候的麻烦(比如sum的返回两个数的和,这两个数可以为int,也可以为double)

具体请看如下:

 5.集合

导包import Java.util.ArryList;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringJoiner;
public class Main {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");  //
        list.add("B");
        list.add("B");
        list.add("C");
        //删除(按内容删除)
        boolean res1= list.remove("A");
        System.out.println(res1);
        
        //集合中没有R,所以无法删除
        boolean res2= list.remove("R");
        System.out.println(res2);
        System.out.println(list);
        
//删除(搜引删除)
String str= list.remove(1);
System.out.println(str);
        System.out.println(list);

        //修改
String result=list.set(1,"Dd");
System.out.println(result);
        System.out.println(list);

        //查询
        String s=list.get(1);
        System.out.println(s);

        //长度
System.out.println(list.size());
System.out.println(list);
    }
}

结果如下:

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

注意:1.静态方法中只能访问静态变量和静态方法。

2.非静态可以访问所有。

3.静态方法中没有this关键字

静态函数中无this,只能使用静态变量,非静态中含有this,可以使用静态函数及变量。

修饰成员变量:

修饰成员方法:

主函数:

6.继承

继承的优点:

1.可以把多个子类中的重复代码抽取到父类中,提高了代码的复用性。

2.子类可以在父类的基础上,增加其它的功能,使子类更加强大。

什么时候使用继承?

当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。

继承关系如下:注意:私有的成员变量虽然被继承下来了,但是却不能用。

虚方表:非private,非static,非final修饰



例子如下:

this指子类,super指父类!

如果有父类函数fun,但是子类需要功能的函数与之不同,则可以在子类中进行重写。

注意:

1.重写方法,名称一样,行参列表必须与父类一致。

2.子类重写父类方法时,访问权限必须大于等于父类(暂时了解:空着不写<protected<public)

3.子类重写父类方法时,返回值类型必须小于等于父类。

4.建议:子类重写的方法尽量与父类一致。

5.只有被添到虚方表中的方法才能被重写。

2.及修饰词

3.及指类型,子类小于父类,父类等于父类正确(Animal是父类,Dog是子类,及为返回值小于父亲)

7.多态

1.什么是多态

对象的多种形态。

2.多态的前提

1.有继承/实现关系

2.有父类引用指向子类对象

3.有方法的重写

public class Demo01 {
    public static void main(String[] args) {
        /*
        一个对象的实际引用类型是确定的,比如:
        new Student()
        new Person()
         */

        Student s1 = new Student();//子类指向的引用
        
        //子类能调用的方法都是自己的或者是父类的
         
        //父类的引用可以指向子类(有父子关系就可以 ,比如用String肯定不行,因为没有指定的关系。)

        Person s2 = new Student();//父类指向的引用
        
        //父类型虽然可以指向子类,但是不能调用子类独有的方法
         
        Object s3 = new Student();
 
        s2.run();//运行结果为run,因为子类重写了父类的方法,执行的为子类的方法
        s1.run();
        s1.eat();
        //对象能执行哪些方法,主要看对象左边的类型,和右边的关系不大。
        /*
        ((Student)s2).eat();
        强制转换后可以进行调用
         */
        (s2.eat());//无法调用是因为 Person s2 = new Student();虽然new了Student()但不能使用Student()方法,要看Person里面有没有,有的话才能用。
        // 子类重写了父类的方法,执行的为子类的方法。子类和父类的方法都有的话,子类没有重写方法,就调用父类的,如果重写的话就带哦用子类的。
    }
}
 

public class Person extends Object {   //在这里Person为子类,Object为父类
    public void run(){
        System.out.println("run");
    }
}
public class Student extends Person{   //在这里Student为子类,Person为父类
    @Override        //提示重写方法
    public void run() {
        System.out.println("son");
    }
    public void eat(){
        System.out.println("eat");
    }
}

3.多态的好处

1.使用父态作为参数,可以接受所有子类对象

2.体现多态的便利与扩展性

注意:

调用成员方法的特点:编译看左边,运行看右边

调用成员变量的特点:编译看左边,运行看左边

4.多态的弊端

假设Animal  a=new Dog();(Animal为父类,Dog为子类,Cat也为子类)

不能调用子类的特有功能,编译的时候会检查左边的父类中有没有这个方法,如果没有则直接报错。

解决方案:将其变回子类。(Dog d=(Dog)  a)强制转换,也可以如下:

拓展:instanceof关键字

作用:instanceof关键字可以判断两个类之间是否存在父子关系。

1.父类引用指向子类的对象。

      2.子类转换为父类(向上转型),不用强制转换。

      3.父类转换为子类(向下转型),强制转换后会丢失方法。

      4.方便方法的调用,减少重复的代码,提升代码的利用率并且使代码变得更简洁。

以上图为例,判断a是否为Dog类型,是则强制转换成Dog并用d表示。

网上示例:

public class Demo01 {
    public static void main(String[] args) {
        //Object>String
        //Object>Person>Student
        //Object>Person>Teacher
        //System.out.println(A instanceof B);
        //A和B是否有继承关系
        Object object = new Student();
        System.out.println(object instanceof Student);//true
        System.out.println(object instanceof Person);//true
        System.out.println(object instanceof Object);//true
        System.out.println(object instanceof Teacher);//false
        System.out.println(object instanceof String);//false
        Person person = new Student();
        System.out.println(person instanceof Student);//true
        System.out.println(person instanceof Person);//true
        System.out.println(person instanceof Object);//true
        System.out.println(person instanceof Teacher);//false
        //System.out.println(person instanceof String);//编译错误
    }
}
 
public class Person extends Object {
    public void run(){
        System.out.println("run");
    }
}
public class Student extends Person{
    @Override
    public void run() {
        System.out.println("son");
    }
    public void eat(){
        System.out.println("eat");
    }
}

8.StringBulider

StringBulider是一个java里的关键字,可以看做一个容器,但是其是一个可以改变的容器,对其有四种操作可以进行,分别是添加元素(append),反转元素(reverse),获取长度(length)以及将StringBulider容器里面的东西变成字符串(toString)

作用:提高字符操作效率

public class Main {
    public static void main(String[] args) {
        StringBuilder b=new StringBuilder();
        b.append("yyz").append(18).append("nb").append("yyds");
        //这是其中的特殊处理方法,类似一条龙服务
        System.out.println(b);

        //字符串的反转
        b.reverse();
        System.out.println(b);

        //获取字符串长度
        int len=b.length();
        System.out.println(len);

        //将容器里面的东西赋给字符串
        String s= b.toString();
        System.out.println(s);
    }
}

结果如下:

9.StringJoiner

也可以看做一种容器,创建之后里面的内容是可变的。注意:需要导包

import java.util.StringJoiner;
public class Main {

    public static void main(String[] args) {
        StringJoiner a = new StringJoiner(",");
        a.add("111").add("222").add("333");
        int len1 = a.length();
        System.out.println(len1);
        System.out.println(a);
        String str1 = a.toString(); //转化成字符串形式
        System.out.println(str1);

//中间,前面,最后(,【,】,这三个的放置位置)
        StringJoiner b = new StringJoiner(",", "[", "]");
        b.add("abc").add("bcd").add("ert");
        int len2 = b.length();
        System.out.println(len2);
        System.out.println(b);
        String str2 = b.toString();
        System.out.println(str2);
    }
}

结果如下:

拓展之调整字符串内容

1.用subString进行截取,然后拼接

2.将字符串变为字符数组,调整完了,在把字符数组变为字符串

String str1=str2.subString(0,2);(截取0到2的字符串)

String str1=str2.subString(2);(截取2以后的字符串)

10.包和final

使用其他类的规则:

1.使用同一个包中的类不需要导包。

2.使用Java.lang包中的类时,不需要导包。

3.其他情况都需要导包。

4.如果同时使用两个包中的同名类,需要用全类名。

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

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

相关文章

云计算【第一阶段(22)】Linux的进程和计划任务管理

目录 一、查看进程 1.1、程序和进程的关系 1.2、查看进程 1.2.1、静态查看进程信息ps ​编辑 1.2.1.1、实验 1.2.2、动态查看进程信息top 1.2.2.1、实验 1.2.2.2、top 命令全屏操作界面快捷键 1.2.3、pgrep根据特定条件查询进程pid信息 1.2.4、pstree命令以树形结构列出…

工程安全监测仪器:振弦采集仪的应用与发展

工程安全监测仪器&#xff1a;振弦采集仪的应用与发展 振弦采集仪是一种常见的工程安全监测仪器&#xff0c;广泛应用于建筑、桥梁、隧道、地铁等工程项目中。它通过监测振弦的振动变化&#xff0c;可以及时发现结构变形或损坏情况&#xff0c;为工程的安全运行提供重要数据支…

【前端实现】在父组件中调用公共子组件:注意事项逻辑示例 + 将后端数组数据格式转换为前端对象数组形式 + 增加和删除行

【前端】在父组件中调用公共子组件的实现方法 写在最前面一、调用公共子组件子组件CommonRow.vue父组件ParentComponent.vue 二、实现功能1. 将后端数组数据格式转换为前端对象数组形式2. 增加和删除row 三、小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2…

优化页面加载时间

注&#xff1a;机翻&#xff0c;未校对。 本文年代久远&#xff0c;除了少部分不合时宜的&#xff0c;其他仍有借鉴意义。 Optimizing Page Load Time 优化页面加载时间 It is widely accepted that fast-loading pages improve the user experience. In recent years, many …

数组-螺旋矩阵

M螺旋矩阵 ||&#xff08;leetcode59&#xff09; /*** param {number} n* return {number[][]}*/ var generateMatrix function(n) {const maxNum n * n;let curNum 1;const matrix new Array(n).fill(0).map(() > new Array(n).fill(0));let row 0,column 0;const d…

06 threeJs-gui 界面库

1.引入GUI 如果需要使用lil-gui界面库对页面进行辅助调试和数值设置&#xff0c;则需在项目中进行引入&#xff0c;例如&#xff1a; import { GUI } from ../../build/three/examples/&#xff1b;/libs/lil-gui.module.min.js 2.实例化 交互界面 3.对需要在交互界面显示的数…

redis学习(001 介绍)

黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 总时长 42:48:00 共175P 此文章包含第1p-第p4的内容 文章目录 介绍差异对比事务区别 认识redis 介绍 两种键值对方式对比 差异对比 事务区别 认识redis

uniapp 封装请求

新建request文件夹 下新建index.js 和index.js 或者创建units文件放入index.js 和api文件夹放入index.js(api.js)//看公司规范 1. index.js // 全局请求封装 // const base_url http://localhost:8080/devapi var base_url process.env.NODE_ENV development ? http://…

Ubuntu24.04(22.04+版本通用)Miniconda与Isaacgym

1. ubuntu24.04安装minicondda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh解释下这段代码 bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3~/miniconda3/miniconda.sh: 指向Mi…

UE5 02-给物体一个扭矩力

需要注意的是: 1.弹簧臂 可以使用绝对旋转 这样就可以不跟随父物体Player的旋转 2.弹簧臂 进行碰撞测试勾选,当这个弹簧线被遮挡,摄像机会切换到碰撞点位置 进行碰撞测试勾选,当这个弹簧线被遮挡,摄像机不会切换到碰撞点位置

SD-WebUI视频重绘:TemporalKit+EbsynthUtility避坑指南

AI视频重绘&#xff0c;在当下大家并不陌生。我们的实现方式大致可以分为三种: 第三方平台和discord上转绘&#xff0c;如DomoAI &#xff0c;GoEnhance AI 等。 优点&#xff1a;效果佳&#xff0c;门槛低。 缺点&#xff1a;需要科学上网&#xff0c;和支付一定的使用费用。…

Android设备信息(DevInfo)

软件介绍 设备信息&#xff08;DevInfo&#xff09;一款评分非常不错的手机硬件及各种信息检测应用&#xff0c;安卓设备硬件检测工具。可以全面查看手机的各种信息、包括&#xff1a;Android系统版本的详细信息、芯片CPU处理器的详细信息、全球卫星定位、测试功能、硬件温度、…

image媒体组件属性配合swiper轮播

图片组件&#xff08;image&#xff09; 先插入个图片试试&#xff0c;插入图片用src属性&#xff0c;这是图片&#xff1a; 代码如下&#xff1a; <template><view><swiper indicator-dots indicator-color "#126bae" indicator-active-color &…

高效生产力,手机也能工作#MixCopilot工作流

从一个DEMO说起&#xff1a; 制作完DEMO&#xff0c;体验完这一个手机专用的工作流之后&#xff0c;我感觉我以后再也不用待电脑前了&#xff0c;可以躺着玩手机了。。。 然后&#xff0c;我花了点时间把这个流程优化了&#xff0c;目前在MixCopilot的内部测试版已经支持此项功…

发送微信消息和文件

参考&#xff1a;https://www.bilibili.com/video/BV1S84y1m7xd 安装&#xff1a; pip install PyOfficeRobotimport PyOfficeRobotPyOfficeRobot.chat.send_message(who"文件传输助手", message"你好&#xff0c;我是PyOfficeRobot&#xff0c;有什么可以帮助…

【论文阅读】-- Strscope:不规则测量的时间序列数据的多尺度可视化

Stroscope: Multi-Scale Visualization of Irregularly Measured Time-Series Data 摘要1 引言2相关工作2.1&#xff08;大型&#xff09;时间序列数据可视化2.2 事件序列数据可视化2.3 评价 3问题分析3.1 数据集3.2 场景——现状3.3 设计流程3.4 设计原理 4 涟漪图&#xff1a…

JavaScrip——switch类型

目录 任务描述 相关知识 严格相等 switch语句 编程要求 任务描述 北美五大湖的名称和面积如下&#xff1a; 名称面积(平方公里)Superior82414Huron59600Michigan58016Erie25744Ontario19554 本关任务&#xff1a;根据面积判断湖泊的名字。 相关知识 上一关讲解的是拥…

Vulhub——struct2

文章目录 一、Struct21.1 Struct2简介1.2 判断Struct2框架1、URL中添加不存在路径2、URL添加/struts/domTT.css3、404、500响应码返回信息 4、URL 二、struct2相关漏洞复现2.1 s2-001手工复现工具探测 2.2 s2-005手工复现工具探测 2.3 s2-007手工复现工具检测 2.4 s2-008手工复…

修复 OpenSSH 爆出极其严重的安全漏洞!

最近几天OpenSSH爆出了一个高危漏洞&#xff1a;CVE-2024-6387&#xff0c;影响到了很多的Linux服务器系统。明月第一时间给所有的代维客户服务器进行了排查和漏洞修复&#xff0c;因此耽搁了一些时间。直到今天才算抽出空来给大家分享一下。严格上来说这个漏洞的危险性还是极高…

mongdb学习与使用

1. 基础概念 MongoDB简介&#xff1a; MongoDB是一个基于文档的NoSQL数据库&#xff0c;具有高性能、高可用性和易扩展性。数据存储在类似JSON的BSON格式中。 基本术语&#xff1a; Database&#xff08;数据库&#xff09;&#xff1a; 集合的容器。Collection&#xff08;集合…