java学习笔记——第八章 类和方法(二)

2023-11-18

8.4使用方法
java中的方法不能独立存在,他必须属于一个类或者一个对象,因此方法也不能像函数那样被独立执行。因此必须使用类或对象来调用
总结:

  • 方法不能独立定义,方法只能在类体中定义。
  • 逻辑上讲,方法要么属于该类本身,要么属于该类的一个对象。
  • 永远不能独立执行方法,执行方法必须使用类或对象作为调用者。

调用方法也必须使用类或对象作为主调者,如果在声明方法时包含形参声明,则调用方法时必须给这些形参指定参数值。调用方法时,实际传给形参的参数值也被称为实参
例如:

public class chuandi {
	public static void swap(int a , int b)
	{
		int tmp=a;
		a=b;
		b=tmp;
		System.out.println("swap方法里,a的值是"+a+";b的值是"+b);
	}
	public static void main(String args[])
	{
		int a=6;
		int b=9;
		swap(a,b);
		System.out.println("交换后,实参a的值是"+a+":实参b的值是"+b);
	}
}

长度可变的方法
在java中定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。在最后一个形参类型后增加三点"…",则表明该形参可以接受多个参数值。
例如:

public class Bian {
	public static void test(int a, String... books)
	{
		//book被当成数组处理
		for(String tmp : books)
		{
			System.out.println(tmp);
		}
		System.out.println(a);
	}
	public static void main(String args[])
	{
		//调用test方法,为args参数可以传入多个字符串
		test(2000,"歼15","歼20");
		test(1400,new String[] {"歼10B","歼20B"});
		//调用test方法,为args参数可以传入多个字符串
	}
}

结果:

1520
200010B
歼20B
1400

构造方法
当使用一个类创建对象的时候,java会调用该类的构造方法,构造方法命名必须与类名一致。格式如下:

[构造方法修饰符] 方法名 ([参数列表])
{
	方法体
}

例如:

public class leione {
	String gname;
	int gid;
	float gprice;
	public void print()
	{
		System.out.println(gname+",产品序列号"+gid+",造价成本是"+gprice+"万美元");
	}
	public static void main(String args[])
	{
		leione book1=new leione();
		book1.gname="歼10B";
		book1.gid=10005601;
		book1.gprice=4000;
		book1.print();
		leione book2=new leione();
		book2.gname="歼20B";
		book2.gid=12225601;
		book2.gprice=6500;
		book2.print();
	}
}

递归方法
一个方法在其方法内调用自身,称之为递归
例如计算f(10):

public class digui {
	public static int fn(int n)
	{
		if(n==0)
		{
			return 1;
		}
		else if(n==1)
		{
			return 4;
		}
		else
		{
			return 2* fn(n-1)+fn(n-2);
		}
	}
	public static void main(String args[])
	{
		System.out.println(fn(10));
	}
}

8.5使用this关键字
java中使用this的关键字去访问全局变量。语法格式如下:

this.成员变量名
this.成员方法名()

例如:

public class leithree1 {
	public String color="粉红";
	public void hu()
	{
		String color="咖啡";
		System.out.println("歼20的涂装颜色是"+color+"色的");
		System.out.println("歼15的涂装颜色是"+this.color+"色的");//访问全局变量
	}
	public static void main(String args[])
	{
		leithree1 bb=new leithree1();
		bb.hu();
	}
}

结果:

20的涂装颜色是咖啡色的
歼15的涂装颜色是粉红色的

8.6使用类和对象
在java中使用对象的方法和变量,通过点 “."实现对变量的访问和对方法的调用。
创建和使用方法
在java中,一般通过关键字new 来创建对象。电脑会自动为对象分配一个空间,然后访问变量和方法。
例如:

public class leidui1 {
	int X=12;
	int Y=23;
	public void printFoo()
	{
		System.out.println("X="+X+",Y="+Y);
	}
	public static void main(String args[])
	{
		System.out.println("坐标是:");
		leidui1 Z=new leidui1();
		Z.X=41;
		Z.Y=75;
		Z.printFoo();
		leidui1 B=new leidui1();
		B.X=23;
		B.Y=38;
		B.printFoo();
	}
}

使用静态变量和静态方法
在java中只要使用static修饰某个变量和方法,就被称作静态变量和静态方法
访问静态方法时,只需要类名.,即可实现对变量的访问和方法调用。
例如:

public class leijing1 {
	static int Y;
	static int X;
	public void printJingTai()
	{
		System.out.println("X="+X+",Y="+Y);
	}
	public static void main(String args[])
	{
		leijing1 Aa=new leijing1();
		System.out.println("改变飞机计划,战斗即将飞往新的领域,具体坐标是:");
		Aa.X=4;
		Aa.Y=5;
		leijing1.X=112;
		leijing1.Y=252;
		Aa.printJingTai();
		leijing1 Bb=new leijing1();
		Bb.X=3;
		Bb.Y=8;
		leijing1.X=131;
		leijing1.Y=272;
		Bb.printJingTai();
	}
}

结果:

改变飞机计划,战斗即将飞往新的领域,具体坐标是:
X=112,Y=252
X=131,Y=272

8.7抽象类和抽象方法
使用静态变量和静态方法
在java中,使用 abstract修饰符来定义抽象类和抽象方法。
抽象类:是指只声明方法的存在而不去实现它的类,抽象类不能实例化,不能创建对象。
格式如下:

abstract class 类名{
类体
}

在java中抽象方法和抽象类的规则如下:

  • 抽象类、抽象方法必须使用abstract修饰符来修饰,方法不能有方法体。
  • 抽象类不能被实例化,无法使用new关键字
  • 抽象类里不包含抽象方法,这个抽象类也不能创建实例。
  • 抽象类可以包含属性、方法。主要被子类调用
  • 含有抽象方法的类,只能被定义为抽象方法。
public abstract test()

是一个抽象方法,根本没有方法体,即定义后没有一对花括号。

public void test(){}

是一个普通方法,他已经定义了方法体,只不过这个方法体{}是空的而已。
例如:
(1)新建一个Fruit抽象类。

public abstract class Fruit {
	//定义抽象类
	public String color;
	//定义构造的方法
	public Fruit()
	{
		color="红色";
	}
	//定义抽象方法
	public abstract void harvest();
}

(2)因为抽象类不会具体实现,新建一个苹果类来继承这个抽象类。

public class pingguo extends Fruit{
	public void harvest()
	{
		System.out.println("苹果已经收货!");
	}
}

(3)新建一个橘子类。

public class Juzi extends Fruit{
	public void harvest()
	{
		System.out.println("橘子已经收获!");
	}
}

(4)新建一个zong类。

public class zong {
	public static void main(String args[])
	{
		System.out.println("调用苹果类的harvest方法结果如下:");
		pingguo pinguo = new pingguo();
		pinguo.harvest();
		System.out.println("调用橘子类的harvest方法结果如下:");
		Juzi orange = new Juzi();
		orange.harvest();
	}
}

输出结果:

调用苹果类的harvest方法结果如下:
苹果已经收货!
调用橘子类的harvest方法结果如下:
橘子已经收获!

抽象类必须有一个抽象方法
java中,抽象类最大的规则就是:抽象类必须有一个抽象方法
例子:

abstract class cou
{
	int a1;
	int b1;
	cou(int a,int b)
	{
		a1=a;
		b1=b;
	}
	abstract int mathtext();//抽象方法
}
class cou1 extends cou
{
	cou1(int a,int b)
	{
		super(a,b);
	}
	int mathtext()
	{
		return a1+b1;
	}
}
class cou2 extends cou
{
	cou2(int a,int b)
	{
		super(a,b);
	}
	int mathtext()
	{
		return a1-b1;
	}
}
public class leichou {
	public static void main(String args[])
	{
		cou1 abs1=new cou1(3000,2000);
		cou2 abs2=new cou2(4000,2000);
		cou abs;
		abs=abs1;
		System.out.println("加油后,是多少:"+abs.mathtext());
		abs=abs2;
		System.out.println("开过后,是多少:"+abs.mathtext());
	}
}

输出结果:

加油后,是多少:5000
开过后,是多少:2000

抽象类的作用
抽象类不能创建实例,只能当作父类被继承
从语义角度看,抽象类是从多个具体类中抽象出来的父类,具有更高层次的抽象,以这个抽象类作为其子类的模板。
例子:父类的普通方法依赖于一个抽象方法,而抽象方法则推迟到子类中去实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java学习笔记——第八章 类和方法(二) 的相关文章

  • Mockito 在调用参数数量可变的方法时使用参数匹配器

    我试图在对具有可变数量参数的方法的调用中使用参数匹配器 Java 中的东西 没有成功 我的代码如下 我还将列出我尝试用来完成此工作的所有行 import static org mockito Mockito public class Met
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • oracle索引监控

    oracle索引是加快查询速度 减少i o操作的 但是如果索引无用的话那他就是浪费资源的 尤其是在做DML操作时 这是 就需要我们查看那些索引是无用的 相关视图 user indexesuser ind columnsv object us
  • java学习03-程序执行三大结构

    一 顺序执行语句 程序运行时 按顺序从上往下执行 二 分支语句 分支运算 if else if 条件 if 条件 else 虽然多个语句块 但是只有一个执行 if 条件 else if 条件 else switch case 不能嵌套 sw
  • 报错Attribute "path" is required and must be specified for element type

    Attribute path is required and must be specified for element type 最近搞一个项目总遇到这个或者类似的问题 其实问题很简单 其实就是batis和MyBatis之间有区别 就是在
  • java8 stream findfirst().get()空指针

    java8 stream findfirst get 空指针 List
  • 【STM32CUBE+IAR+IAP升级】

    STM32CUBE IAR IAP升级 案例应用 利用IAR 串口调试助手对STM32F411VET6进行简单的IAP实现 代码分为两部分 BootLoader APP翻转LED 1 工具 IAR STM32CUBEMX 串口调试助手 IA
  • ResultSet的getDate()、getTime()和getTimestamp()比较

    最近在做一个项目 发现个知识点 记录一下 数据库中存储时间格式为2021 8 11 16 09 28 现在要从ResultSet中取出时间 当然是要包含年月日时分秒的 发现 rs getDate 只是返回日期部分 只精确到天 java sq
  • el-image因src路径问题加载失败

    载入图片目录路径如下 起初 我将路径这样写
  • CDH多租户配置过程中遇到的问题

    多租户是CDH里面非常重要的一部分 从一开始配置KDC到集成KDC 服务使用过程中都有可能会遇到各种各样的问题 下面我举例说下我当时遇过的问题 希望能帮助到大家 服务启动错误 KDC服务配置完成安装完成 CDH集成过程中也没问题 CDH启动
  • WebSocket断开原因分析,再也不怕为什么又断开了

    阅读原文 https wdd js org websocket 1 把错误打印出来 WebSocket断开的原因有很多 最好在WebSocket断开时 将错误打印出来 在线demo地址 https wdd js org websocket
  • 【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分

    个人主页 努力学习的少年 版权 本文由 努力学习的少年 原创 在CSDN首发 需要转载请联系博主 如果文章对你有帮助 欢迎关注 点赞 收藏 一键三连 和订阅专栏哦 IP数据报格式 版本 占4位 指ip协议的版本 首部长度 表示IP数据报中报
  • 短视频矩阵源码

    随着短视频平台的快速发展 越来越多的企业开始关注短视频营销 而矩阵号运营逐渐成为了企业进行短视频营销的常规玩法 那么 矩阵账号如何运作 如何进行短视频矩阵号运营 一 矩阵号怎么搭建 1 选择短视频平台 首先 根据自己企业的特点和目标用户群体
  • 【C语言】结构体

    目录 结构体 结构体类型的声明 结构体的自引用 结构体变量的定义和初始化 结构体内存对齐 计算结构体大小 结构体内存对齐的意义 修改默认对齐数 结构体传参 结构体实现位段 什么是位段 位段的内存分配 位段的应用 结构体 结构体类型的声明 1
  • javascript 字符串判断是否为空

    var a document getElementById notValid if a a为null 或者 或者0 alert javascript 字符串为null 或者是0
  • 安卓Android和Java语言的异同、关系和区别

    安卓Android和Java语言的异同 关系和区别 安卓Android是一种以Linux为基础的开放源码操作系统 主要使用于便携设备 2011年第一季度 安卓在全球的市场份额首次超过塞班系统 跃居全球第一 2012年2月数据 安卓占据全球智
  • Linux Ctrl+ 所有的快捷键

    Ctrl a 光标移到行首 Ctrl b 光标向前移一格 Ctrl c 结束命令 Ctrl d 删除光标所在字符 Ctrl e 光标移到行尾 Ctrl f 光标向后移一格 Ctrl g Ctrl h 删除光标前一格 Ctrl i Ctrl
  • SoC性能指标&ARM内核运算能力

    自动驾驶芯片常用的性能评价指标 TOPS DMIPS GFLOPS分别说的是啥 TOPS Tera Operation Per Second 表示每秒钟可以进行的操作数量 用于衡量自动驾驶的算力 众所周知 汽车上最常用的传感器是摄像头 而与
  • URP——后期处理特效

    通用渲染管道 URP 包括一个后处理效果的集成实现 如果使用URP 则不需要为后期处理效果安装额外的包 URP与Post Processing Stack v2包不兼容 URP使用体积框架进行后期处理效果 下面的图片显示了一个URP场景有没
  • 解决qt中cmake单独存放 .ui, .cpp, .h文件

    创建时间 2023 02 18 17 58 04 设想 项目文件较多 全部放在一个目录下就像依托答辩 希望能将头文件放入include ui文件放入ui 源文件放入src 为了将Qt代码和一般非Qt代码分离开 进一步地 将Qt源文件放入qt
  • 【Java】关于你不知道的Java大整数运算之BigInteger类超级好用!!!

    目录 一 BigInteger类简单介绍 二 BigInteger构造方式 1 构造方式 2 输入方式 三 BigInteger常见的成员方法 1 方法介绍 2 方法使用演示 1 加减乘除余 2 比较 3 绝对值和幂 4 转换成对应进制字符
  • java学习笔记——第八章 类和方法(二)

    8 4使用方法 java中的方法不能独立存在 他必须属于一个类或者一个对象 因此方法也不能像函数那样被独立执行 因此必须使用类或对象来调用 总结 方法不能独立定义 方法只能在类体中定义 逻辑上讲 方法要么属于该类本身 要么属于该类的一个对象