java项目总结2

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.如果同时使用两个包中的同名类,需要用全类名。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5月1日起,《碳排放权交易管理暂行条例》正式施行

2024年5月1日&#xff0c;《碳排放权交易管理暂行条例》&#xff08;以下简称《条例》&#xff09;正式施行&#xff0c;作为我国应对气候变化领域的第一部专门法规&#xff0c;《条例》首次以行政法规的形式明确了碳排放权市场交易制度。 作为碳排放权交易市场的重要补充&…

关于腾讯的哪些事(4月新闻纪要)

科技进步一等奖&#xff01; 这份文件是关于腾讯Angel机器学习平台获得2023年中国电子学会科学技术奖科技进步一等奖的详细介绍。主要内容涵盖了获奖项目《面向大规模数据的Angel机器学习平台关键技术及应用》的技术特点、应用效果以及发展历程。以下是详细总结&#xff1a; 获…

数据结构——树的基础概念

目录 1.树的概念 2.树的相关概念 3.树的表示 &#xff08;1&#xff09;直接表示法 &#xff08;2&#xff09;双亲表示法 (3)左孩子右兄弟表示法 4.树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 1.树的概念 树是一种非线性的数据结构&#xff0…

关于一些数据资源入表事项

一、入表条件&#xff1a; 2024年1月1日《企业数据资源相关会计处理暂行规定》开始执行&#xff0c;以上简称《企业会计准则》&#xff0c;它将资产定义为“企业过去的交易或者事项形成的、由企业拥有或者控制的、预期会给企业带来经济利益的资源”。需要说明的是&#xff0c;…

github 设置中文,亲测有效

点进去 安装 选上面第二个&#xff0c;不行再选第一个 GitHub - maboloshi/github-chinese: GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese)

Java学习十二—Java8特性之Optional类

一、简介 Java 8 引入了 Optional​ 类作为一种容器&#xff0c;可以用来显式地表示一个值存在或不存在。它解决了传统上可能会遇到的空指针异常问题&#xff0c;同时提供了一种更优雅的方式来处理可能为null的情况。 Java 8 中引入 Optional​ 类的背景可以从以下几个方面来理…

Ubuntu查看opencv版本c++

✗命令行中直接输入&#xff1a; pkg-config --modversion opencv✔命令行中直接输入&#xff1a; pkg-config --modversion opencv4注解&#xff1a;附上在markdown中打勾&#xff0c;对号和打叉。使用时将&和#之间的空格去掉&#xff0c;这里只是为了不让CSDN自动转换才…

内容监管与自由表达:Facebook的平衡之道

在当今数字化信息社会中&#xff0c;社交媒体平台不仅是人们交流和获取信息的主要渠道&#xff0c;也是自由表达的重要舞台。Facebook&#xff0c;作为全球最大的社交网络平台&#xff0c;连接了数十亿用户&#xff0c;形成了一个丰富多样的信息生态。然而&#xff0c;如何在维…

怎么加密CAD图纸丨企业级图纸加密软件排行榜

我们为什么需要一款好用的图纸加密软件&#xff1f; CAD图纸包含企业的核心设计和技术&#xff0c;是宝贵的知识产权。加密软件可以防止未经授权的人员获取和复制这些设计。 通过加密&#xff0c;可以有效防止CAD图纸在传输或存储过程中被窃取或泄露&#xff0c;特别是在互联…

软考的报名详细流程

2024年软考的考试时间已经公布&#xff0c;分别为5月25日至28日和11月9日至12日。准备参加2024年软考的朋友们&#xff0c;一定要提前关注官方发布的考试安排。 本文将详细介绍软考报考的整个流程。准备报考的朋友们&#xff0c;阅读本文就足够啦&#xff01;软考的报考流程大致…

面向高精度导航定位领域的UM980RTK定位模块

UM980 是和芯星通自主研发的新一代 BDS/GPS/GLONASS/Galileo/QZSS 全系统全频高精度 RTK 定位模块&#xff0c;基于和芯星通自主研发的新一代射频基带及高精度算法一体化GNSS SoC 芯片—NebulasIV 设计。可同时跟踪 BDS, GPS, GLONASS, Galileo, QZSS, NavIC, SBAS, L-Band* 等…

docker容器间网络仿真工具-pumba

docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预&#xff0c;包括延迟&#xff0c;丢包&#xff0c;带宽限制等。 但是我在实际使用时&#xff0c;发现docker-tc这个工具在进行网络进行模…

大屏开发系列——Echarts的基础使用

本文为个人近期学习总结&#xff0c;若有错误之处&#xff0c;欢迎指出&#xff01; Echarts在vue2中的基础使用 一、简单介绍二、基本使用&#xff08;vue2中&#xff09;1.npm安装2.main.js引入3.使用步骤(1)准备带有宽高的DOM容器&#xff1b;(2)初始化echarts实例&#xff…

React+TS前台项目实战(二十五)-- 全局常用排序组件SortButton封装

文章目录 前言SortButton组件1. 功能分析2. 代码详细注释3. 使用到的全局hook代码4. 使用方式5. 效果展示 总结 前言 今天要封装的SortButton 组件&#xff0c;主要用在表格列排序上&#xff0c;运用于更新路由并跳转更新&#xff0c;起到刷新页面仍然处于当前排序数据。 Sor…

2024最新PyCharm安装教程(附激活码)

今天讲解的是PyCharm安装教程 一、软件简介 PyCharm是一款Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外…

鸿翼ECM统一AI检索应用全景,为企业打造全方位搜索服务

随着企业的发展和信息化进程的加快&#xff0c;海量数据已沉淀至企业各类系统&#xff0c;系统间信息孤立、信息利用率低、数据价值无法发挥成为制约企业发展的重要因素。如何对散落在企业各系统中的数据、内容进行统一管理和高效利用&#xff0c;实现高效精准的信息检索&#…

手把手教你一步一步通过AI助手生成利润表分析报告

AI助手之利润表分析报告-操作篇 以下为文字整理部分&#xff1a; 如果要手工制作一份这样的利润分析报告大概要多久时间&#xff1f;从准备数据做成表格&#xff0c;到完成报告&#xff0c;至少需要1天的时间吧&#xff0c;特别是敲文字报告的时候&#xff0c;生怕把数字搞错要…

springboot水环境检测系统的设计与实现-计算机毕业设计041446

摘 要 在我国,水源的污染是不可忽视的问题。对于水质监测进行数据的采集工作,目前主要通过人工实现。因此,部分地区的采集工作,实施起来难度很大,比如恶劣环境和偏僻山区等地。所以,目前对于水质监测的研究,主导方向是建立更加高效完善,智能化的水质监测系统。近几年,无线传感器…

工业 web4.0UI 风格品质卓越

工业 web4.0UI 风格品质卓越

STM32 Cannot access memory

问题描述 最近自己做了一块STM32F103ZET6的板子&#xff0c;在焊接完成后可以在下载器界面看到idcode&#xff0c;但烧录时报错 Cannot access memory 。 解决办法 测量STM32各个供电项&#xff0c;发现时33脚处VDDA电压只有1.8V&#xff0c;是因为R3电阻过大&#xff0c;…