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);//trueSystem.out.println(object instanceof Person);//trueSystem.out.println(object instanceof Object);//trueSystem.out.println(object instanceof Teacher);//falseSystem.out.println(object instanceof String);//falsePerson person = new Student();System.out.println(person instanceof Student);//trueSystem.out.println(person instanceof Person);//trueSystem.out.println(person instanceof Object);//trueSystem.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{@Overridepublic 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.mzph.cn/bicheng/40123.shtml

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

相关文章

《UDS协议从入门到精通》系列——图解0x84:安全数据传输

《UDS协议从入门到精通》系列——图解0x84&#xff1a;安全数据传输 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 Tip&#x1f4cc;&#xff1a;本文描述中但凡涉及到其他UDS服务的&#xff0c;将陆续提供链接跳转方式以便快速了解他…

以太坊DApp交易量激增83%的背后原因解析

引言 最近&#xff0c;以太坊网络上的去中心化应用程序&#xff08;DApp&#xff09;交易量激增83%&#xff0c;引发了广泛关注和讨论。尽管交易费用高达2.4美元&#xff0c;但以太坊仍在DApp交易量方面遥遥领先于其他区块链网络。本文将深入探讨导致这一现象的主要原因&#…

机器人控制系列教程之Delta机器人奇异性分析

并联机器人奇异性 对于并联机构的奇异性问题比串联机构复杂。某些位形机构会失去自由度&#xff0c;某些位形机构会出现不可控自由度。其分析方法主要有几何法和代数法&#xff0c; 几何法&#xff1a; 即根据高等空间相关知识和机构中角度范围、干涉条件等推导出机构的奇异位…

力扣Hot100-19删除链表的倒数第n个节点(双指针)

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#xff1a;…

OpenCV 图像最小外包围矩形的绘制及长短边的计算

目录 一、概述 1.1意义 1.2应用 二、代码实现 三、实现效果 3.1原始图像 3.2处理后图像 3.3数据输出 一、概述 最小外包围矩形&#xff08;Minimum Bounding Rectangle, MBR&#xff09;在计算机视觉和图像处理中的意义和应用非常广泛。它是指能够完全包围目标的最小矩…

phpexcel导入导出

前言&#xff1a; 如果你到处的excel软件打开有问题&#xff0c;下面有介绍解决办法 导入 1. composer init 初始化 2. 下载phpspreadsheet 这里需要注意php版本&#xff0c;需要大于7.2 composer require phpoffice/phpspreadsheet3. 编写代码 <?php require vendo…

WPF 3D绘图 点云 系列五

基本概念:点云是某个坐标系下的点的数据集。 可能包含丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等 点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。万物皆点云。 通过三维激光扫描仪进行数据采集获取点云数据,其次通过二维影像进行…

Java | Leetcode Java题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution {public int rob(int[] nums) {int length nums.length;if (length 1) {return nums[0];} else if (length 2) {return Math.max(nums[0], nums[1]);}return Math.max(robRange(nums, 0, length - 2), robRange(nums, 1,…

小试牛刀-区块链代币锁仓(Web页面)

Welcome to Code Blocks blog 本篇文章主要介绍了 [区跨链代币锁仓(Web页面)] ❤博主广交技术好友&#xff0c;喜欢我的文章的可以关注一下❤ 目录 1.编写目的 2.开发环境 3.实现功能 4.代码实现 4.1 必要文件 4.1.1 ABI Json文件(LockerContractABI.json) 4.2 代码详解…

AI绘画-Stable Diffusion 原理介绍及使用

引言 好像很多朋友对AI绘图有兴趣&#xff0c;AI绘画背后&#xff0c;依旧是大模型的训练。但绘图类AI对计算机显卡有较高要求。建议先了解基本原理及如何使用&#xff0c;在看看如何实现自己垂直行业的绘图AI逻辑。或者作为使用者&#xff0c;调用已有的server接口。 首先需…

单片机软件架构连载(3)-typedef

今天给大家讲typedef&#xff0c;这个关键字在实际产品开发中&#xff0c;也是海量应用。 技术涉及知识点比较多&#xff0c;有些并不常用&#xff0c;我们以贴近实际为原则&#xff0c;让大家把学习时间都花在重点上。 1.typedef的概念 typedef 是 C 语言中的一个关键字&…

DP:背包问题----0/1背包问题

文章目录 &#x1f497;背包问题&#x1f49b;背包问题的变体&#x1f9e1;0/1 背包问题的数学定义&#x1f49a;解决背包问题的方法&#x1f499;例子 &#x1f497;解决背包问题的一般步骤&#xff1f;&#x1f497;例题&#x1f497;总结 ❤️❤️❤️❤️❤️博客主页&…

【RflySim学习笔记】1.RflySim的绪论

目录 文章目录 目录1.RflySim 平台背景2.RflySim 平台特点3.RflySim 平台核心组件介绍3.1 CopterSim3.2 RflySim3D/RflySimUE5UE引擎&#xff1a;RflySim3D/RflySimUE5 3.3 QGroundControl地面站3.4 Python38Env3.5 MATLAB自动代码生成工具箱3.6 SITL/HITL批处理脚本3.7 PX4 Fi…

springboot+vue+mybatis前台点菜系统+PPT+论文+讲解+售后

21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存储达到…

Golang | Leetcode Golang题解之第214题最短回文串

题目&#xff1a; 题解&#xff1a; func shortestPalindrome(s string) string {n : len(s)fail : make([]int, n)for i : 0; i < n; i {fail[i] -1}for i : 1; i < n; i {j : fail[i - 1]for j ! -1 && s[j 1] ! s[i] {j fail[j]}if s[j 1] s[i] {fail[i…

SDIO学习(2)--SD 2.0协议

目录 1. SD卡简介 1.1 SD卡概念 1.2 SD卡外形和接口 2. SD 2.0主要特性 3. SD 卡系统概念 3.1 读写属性 3.2 总线拓扑结构 3.2.1 SD模式 3.2.2 SPI模式 3.3 SD 2.0总线协议 3.3.1 命令&#xff08;Command&#xff09; 3.3.1.1 命令分类 3.3.1.2 命令格式 3.3.1.…

精确计算应用的冷启动耗时

在iOS项目中&#xff0c;冷启动时间是指从用户点击应用图标开始&#xff0c;到应用完全加载并呈现出第一个界面&#xff08;可能需要网络请求必要的数据&#xff09;所花费的时间。这里以 main 函数为界&#xff0c;分为两个时间段&#xff1a; 从用户点击应用图标 ~ invoke m…

(4)深入探索与优雅安装:Pandas数据处理的魅力之旅

目录 1. 前言1.1 Pandas 概述1.2 Pandas 特点1.3 优化应用举例1.4 Pandas 应用场景 2. DataFrame2.1 DataFrame结构2.2 Pandas 安装2.2.1 Pandas 安装准备2.2.2 Pandas 安装2.2.3 Pandas 包的导入2.2.4 查看 pandas 版本2.2.5 一个简单的 1. 前言 1.1 Pandas 概述 pandas 是 …

大数据招商的应用场景及实施路径有哪些?

当下&#xff0c;我国已经进入数字经济与实体经济融合发展的新阶段&#xff0c;数字技术和数字化转型落地日臻成熟&#xff0c;数据要素价值释放深入到了我国各个领域的发展&#xff0c;招商引资也不例外&#xff0c;在传统招商模式效果日渐甚微的大环境下&#xff0c;大数据招…

Java 基础知识之 switch 语句和 yield 关键字

传统 switch 语句 传统的 switch 语句我们已经写了一万遍了&#xff0c;以下是一个典型的 switch 语句&#xff1a; int dayOfWeek 3; switch (dayOfWeek) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case…