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学习笔记——第八章 类和方法(二) 的相关文章

  • 使用 Intellij Idea 和 gradle 在应用程序引擎上调试 localhost

    我正在使用 IntelliJ 社区添加并使用 Gradle 构建应用程序引擎标准环境应用程序 在迁移到 IntelliJ 和端点框架之前 我使用的是 Android Studio 我无法调试我的本地主机 我添加了 jvmFlags 如下所述
  • java中监视目录变化

    我正在使用 WatchService 来监视目录中的更改 特别是目录中新文件的创建 下面是我的代码 package watcher import java nio file import static java nio file Stand
  • 如何在由子控件组成的 SWT 复合材料上跟踪鼠标?

    我创建了自己的控件 我想跟踪鼠标并添加一个MouseTrackListener 很遗憾MouseEnter and MouseLeave当鼠标移动到我的合成部分 即标签和按钮 上时 也会生成事件 Mouse enter mouse ente
  • TreeMap 删除所有大于某个键的键

    在项目中 我需要删除键值大于某个键的所有对象 键类型为Date 如果重要的话 据我所知TreeMapJava中实现的是红黑树 它是一种二叉搜索树 所以我应该得到O n 删除子树时 但除了制作尾部视图并一一删除之外 我找不到任何方法可以做到这
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件
  • Jframe 内有 2 个 Jdialogs 的 setModal 问题

    当我设置第一个选项时 我遇到了问题JDialog模态 第二个非模态 这是我正在尝试实现的功能 单击 测试对话框 按钮 一个JDialog有名字自定义对话框 主要的将会打开 如果单击 是 选项自定义对话框主 其他JDialog named 自
  • 将巨大的模式编译成Java

    有两个主要工具提供了将 XSD 模式编译为 Java 的方法 xmlbeans 和 JAXB 问题是 XSD 模式确实很大 30MB 的 XML 文件 大部分模式在我的项目中没有使用 所以我可以注释掉大部分代码 但这不是一个好的解决方案 目
  • 如何在字段值无效的情况下更改 Struts2 验证错误消息?

    我在 Web 表单上使用 Struts2 验证 如果字段假设为整数或日期 则
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • 列表过滤器内的 Java 8 lambda 列表

    示例 JSON id 1 products id 333 status Active id 222 status Inactive id 111 status Active id 2 products id 6 status Active
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho

随机推荐

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