java 面向对象练习4 匿名对象与自定义数组工具类

Java学习-04 面向对象以及快递管理案例练习 Java学习-04 面向对象 这阵子主要学习了Java的面向对象。面向对象是相对于面向过程来讲的,从面向过程到面向对象,是程序员思想上从执行者到指挥者的转变。面向对象强调的是直接以现实中的事物,也就是对象,为中心来思考,认识问题,并根据它们各自的本质特点(共性),把它们抽象为java中的类,这样的方式与现实世界有着更好的映射,而且也更符合人类的思维习惯。 想学好面向对象,光靠看听是远远不够的,一个合格的程序员同时也是一个辛勤的耕耘者,一定要多写代码,只有在练习的过程中,才会去想这个地方怎么做,用什么做, 阅读详情

/*

  • 一,理解万事万物皆对象
  • 1,在java中,我们将功能,结构等封装到类中,通过类的实例化来调用具体的功能结构
  • 例如Scanner,String
  • 文件路径file,网络地址 URL都是类
  • 2,在java语言与前端(html,css,js),后端数据库交互时,前后端的结构在java端交互时,都体现为类,对象。
  • 二,匿名对象
  • 1,通过new 类名()来创建一个对象,没有显式的赋一个变量名,直接调用方法即为匿名对象
  • 2,特征:匿名对象只能调用一次。
  • 3,使用:如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象
  • 开发中经常将匿名对象作为实参传递给一个方法调用
    */
package com.atguigu.contact;
import java.util.*;
public class Object4 {
    public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		new Phone().play();//匿名对象使用必须new一次创建对象,但不必命名
		new Phone().call();//匿名对象每次使用都要new一次,所以适合调用一次的情况
		new Phone().price = 1699;//
		new Phone().showPrice();//因为是新对象所以price还是初始值0.0
		//匿名对象的使用
		PhoneShop show = new PhoneShop();
		show.showPhone(new Phone());//此处相当于将匿名对象的首地址值赋给了showPhone的形参p
		//形参p可以在方法内被多次使用,间接实现了匿名对象的多次使用。
		
		
		//测试自定义int数组工具类
		int[] arr = new int[] {23,41,12,-9,0,34,81,4,9,2,77,14,19,45,85};
		IntArrayUtil test = new IntArrayUtil();
		test.print(arr);
		System.out.println(test.search(arr,34));
		test.search(arr, 23);
		test.sort(arr);
		test.print(arr);
		test.reverse(arr);
		test.print(arr);
		test.sort(arr);//要用二分查找排序,首先数组要有序,而且查找的自定义方法设置的是正序
		int k = test.binarySearch(arr, 0);
		if(k < 0) {
			System.out.println("未找到");
		}else {
			System.out.println("找到目标在数组的角标:" + k);
		}
		System.out.println("请输入随机数组的长度");
		int i = scan.nextInt();
		int[] arr1 = new int[i];
		test.setRandomValue(arr1);
		test.print(arr1);
		test.sort(arr1);
		test.print(arr1);
		
	}    
}


class Phone{
	double price = 1999;
	public void play(){
		System.out.println("使用手机玩游戏");
	}
	public void call() {
		System.out.println("使用手机打电话");
	}
	public void showPrice() {
		System.out.println("手机价格是:" + price);
	}	
}

 class PhoneShop{
	
	 public void showPhone(Phone p) {
		p.call();
		p.play();
		p.showPrice();
	}
 }
 
//创建自定义数组工具类
 class IntArrayUtil{
	 //求数组最大值
	 public int maxValue(int[] arr) {
		 int max = arr[0];
		 for (int i = 0; i < arr.length; i++) {
			if(arr[i] >= max) {
				max = arr[i];
			}
		}
		 return max;
	 }
     //求数组最小值
	 public int minValue(int[] arr) {
		 int min = arr[0];
		 for (int i = 0; i < arr.length; i++) {
			if(arr[i] <= min) {
				min = arr[i];
			}
		}
		 return min;
	 }
     //求数组总和
	 public int sumValue(int[] arr) {
		 int sum = arr[0];
		 for (int i = 0; i < arr.length; i++) {			
				sum += arr[i];			
		}
		 return sum;
	 }
     //求数组平均值	 
	 public int averageValue(int[] arr) {
		 int average;
		 average = sumValue(arr) / arr.length;
		 return average;
	 }
     //数组排序
	 public void sort(int[] array) {
		 for (int i = 0; i < array.length -1; i++) {
				int k = i;
				int temp = 0;
				for (int j = i; j < array.length; j++) {
					if(array[j] < array[k]) {					
						k = j;//如果找到一个更小的值则K的角标变换为次值的角标,最后k是最小值的角标
					}
				}
				temp = array[i];
				array[i] = array[k];
				array[k] = temp;//将找到的最小值与本次外层循环的第一个数值交换位置
			}
	 }
     //数组反转
     public void reverse(int[] arr) {
    	 for (int i = 0; i < arr.length / 2; i++) {
  			   int temp;
  			   temp = arr[i];
  			   arr[i] = arr[arr.length - 1 - i];
  			   arr[arr.length - 1 - i] = temp;
  			}
	 }
	 //数组遍历输出
     public void print(int[] arr) {
    	 for (int i = 0; i < arr.length; i++) {
 			System.out.print(arr[i] + " ");
 			}
    	 System.out.println("\n");
     }
	 //数组随机赋值,范围0-100
     public void setRandomValue(int[] arr) {
    	 for (int i = 0; i < arr.length; i++) {
  			arr[i] = (int)(Math.random() * 101);
  			}
     }
     //数组二分查找
     public int binarySearch(int[] arr,int dest) {    	    
 	    int start = 0;
 	    int end = arr.length - 1;
 	    for(;start <= end;) {//或者使用while(start <= end)
 	    	int middle = (start + end) / 2;
 	    	if(arr[middle] == dest) {
 	     	System.out.println(dest + "在数组中的角标是" + middle); 	    	
 	    	return middle;	
 	    	}else if(dest < arr[middle]) {
 	    	end = middle - 1;//通过改变头尾赋值来不断缩小范围,最终收敛到start=end结束循环
 	    	}else if(dest > arr[middle]) {
 	    	start = middle + 1;	
 	    	}	    	
 	    }	  
 	    	return -1; 	    	
	 }
     //数组遍历查找,不需要数组先排序
     public int search(int[] arr, int dest) {
    	 for (int i = 0; i < arr.length; i++) {
			if(arr[i] == dest) {
				System.out.println(dest + "目标在数组中的角标是:" + i);
				return i;
			}
		}
    	 return -1;
     }
         
 }
15、java 面向对象之二:对象的创建和使用(对象内存解析和匿名对象)、再谈方法(方法的重载(overload),可变个数形参,方法参数的值传递机制,递归等) 在 ArrayUtil . java 中定义数组的工具类:求数组的最大值、求数组的最小值、求数组的总和、求数组的平均值、复制数组、数组排序、遍历数组、查找指定元素;在 ArrayUtilTest . java 中调用数组的工具类方法; 阅读详情

相关推荐

java数组自定义排序

java中数组的自定义排序,种类繁多,简单实现,可自由操控。

Java学习笔记day9——匿名内部类、注解、异常及练习

Java学习笔记day9——匿名内部类、注解、异常及练习

qq_40393126的博客 753

java 内部类(匿名类,匿名对象,静态内部类)详解及实例

主要介绍了java 内部类详解及实例代码的相关资料,需要的朋友可以参考下

匿名对象----Java-----练习

匿名对象 1.理解:我们创建对象,没有显示的赋给一个变量名,即为匿名对象 2.特性:匿名对象只能调用一次 3.使用:如下 文章目录匿名对象一、程序二、结果 一、程序 package day02; /*匿名对象: * 1.理解:我们创建对象,没有显示的赋给一个变量名,即为匿名对象 * 2.特性:匿名对象只能调用一次 * 3.使用:如下 * * * */ public class Nimingduixiang { public static void main(String[] a

xue3236522091的博客 219

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

2301_81256766的博客 1253

Marvell 88E6390x交换芯片:从零构建No-CPU模式网络交换系统

本文详细介绍了如何为Marvell 88E6390x以太网交换芯片构建No-CPU模式网络交换系统。通过解析其核心价值与硬件准备,并手把手指导使用CodeBlocks、IMPGUI和SwitchGUI等软件工具进行配置代码编写、镜像生成与烧录,最终实现交换芯片脱离外部CPU独立工作,适用于成本敏感、空间受限的嵌入式网络设备设计。

plant的博客 481

第四十三章Java匿名对象

在以上程序的主方法中可以发现,直接使用了“new Person("张三",30)”语句,这实际上就是一个匿名对象,与之前声明的对象不同,此处没有任何栈内存引用它,所以此对象使用一次之后就等待被 GC(垃圾收集机制)回收。如果一个对象只需要使用唯一的一次,就可以使用匿名对象,匿名对象还可以作为实际参数传递。应用部分的很多地方都可以发现其用法,而且细心的读者可以发现,匿名对象实际上就是个堆内存空间,对象不管是匿名的还是非匿名的,都必须在开辟堆空间之后才可以使用。姓名:张三,年龄:30。

weixin_62458944的博客 220

【ROS2实体机械臂驱动】封装珞石ROS2驱动库ros2_rokae_driver_lib

这一篇文章将封装为,和之前一篇文章《ROS2 编译、打包、封装三方库(Knet为例)_ros插件编译成静态库-优快云博客》写的封装,区别在于优化了cmake dependencies和include等属性和宏定义,同时对于多库内部依赖的情况做了特定处理,更加方便外部调用。其中珞石的编译参考博主之前的文章rokae xCoreSDK C++测试使用,这里不再做赘述。通过这篇文章对于如何打包机械臂厂家提供的三方库做了进一步说明,方便用于不同机械臂厂家的三方库封装调用。!!

机器人梦想家 Bing Lee 1396

Java面向对象初级——6.匿名对象的使用

对匿名对象进行讲解

lyx434681575的博客 656

SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程-第一篇:ADT安装前置准备与环境校验教程

ABAP Development Tools(ADT)安装配置教程摘要 本文是ADT安装系列的第一篇,重点讲解环境准备与版本校验。ADT是基于Eclipse的现代ABAP开发工具,相比传统SAP GUI提供更智能的开发体验。安装前需确认: 推荐使用Eclipse 2026-03 + Java 21组合 操作系统需Windows 10+/macOS 14+ SAP GUI版本要求Windows≥8.00/macOS≥8.10 后端系统需NetWeaver 7.31 SP04+或S/4HANA 通过java -

baidu_35680696的博客 681

uniapp ios原生插件开发 (framework,cocoapods)

已知UniApp的插件开发方式有两种, 第一种 Xcode Framework的方式,这种方式是官方指定的方式。 这种方式的优点就是简单直接, 但也有不足,比如当插件需要引入一些三方库时,操作起来就不是那么方便。 而使用Cocoapods则可以很方便的引入三方库。 接下来,本文探索使用Cocoapods的方式来进行UniApp插件开发。

Rey的技术博客 9821

4、面向对象编程(上)

程序员从面向过程的执行者转化成了面向对象的指挥者面向对象分析方法分析问题的思路和步骤根据问题需要,选择问题所针对的现实世界中的实体。从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。属性:直接定义在类的一对{}中、

qq_44774198的博客 1903

基于matlab的主成分分析的人脸二维码识别系统

人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 976

java面向对象

首先我们知道c语言是面向过程的,而java是面向对象的。 1.面向对象:强调的是功能行为,以函数为最小单位,考虑的是一件事情的一步一步的操作过程,考虑怎么做。 比如:把大象装进冰箱; ①:把冰箱门打开 ②:把大象塞进去 ③:把冰箱门关闭 2.面向过程:强调具备功能的对象。以类/对象为最小单位,考虑谁来做。 面向对象的思想概述: 1.程序员从面向过程的执行者转换成了面向对象的指挥着。 2.面向对象分析问题的思路和步骤: (1)根据问题需要,选择问题所针对的现实世界中的实体。 (2)从实体中寻找解决问题相关的属

weixin_38568503的博客 3482

【AUTOSAR-CanNM】-3.1-如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出)

如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出)

「汽车电子助手」的博客 4723

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5207

【Java基础】第4章_面向对象(上)-1:类、对象、属性、方法

1、面向过程与面向对象 1.1、面向对象的三条主线 1.2、面向对象的思想概述 2、 类和对象 2.1、Java 类及类的成员 2.2、类与对象的创建及使用 2.3、对象的内存解析 3、类的成员之一:属性(成员变量) 4、类的成员之二:方法 4.1、类中方法的声明和使用 4.2、理解 “万事万物皆对象” 4.3、对象数组的内存解析 4.4、匿名对象的使用 4.5、自定义数组的工具类 4.6、方法的重载(overload) 4.7、可变个数的形参 4.8、方法参数的值传递机制(重点) 4.8.1、针对基本数据

欢迎点赞 评论 关注 916

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

面向对象进阶基础练习

学吧,谁能学得过你啊。

2301_80709894的博客 1217

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

一文带你深入理解【Java基础】· 面向对象编程(上)①面向对象的理解、类和对象、对象的创建使用和属性

Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!!!如果小哥哥小姐姐们对我的文章感兴趣,请不要吝啬你们的小手,多多呀!❤❤❤爱你们!!!目录写在前面1. 面向过程与面向对象1.1 何谓“面向对象”的编程思想?1.2 面向对象的思想概述2. Java语言的基本元素:类和对象2.1 面向对象的思想概述2.2 Java类及类的成员。

麟-小白的博客 1797

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

02_Java面向对象基础值数组,方法,类与对象

Java基础知识之面向对象中的数组,方法,类与对象

qq_41781632的博客 1310

【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

Technology changes the world of life 1081

Java是一门面向对象的语言解读

理解并解读java语言的面相对象性

Hugh_Guan的博客 1897

Java面向对象——类与对象

Java面向对象——类与对象 b站学习视频以及笔记-尚硅谷_Java零基础教程 java入门必备-适合初学者的全套完整版教程(宋红康主讲) 1.面向对象学习的三条主线: Java类及类的成员:属性、方法、构造器;代码块、内部类 2.面向对象的大特征:封装性、继承性、多态性、(抽象性) 3.其它关键字:this、super、static、final、abstract、interface、package、import等 “大处着眼,小处着手” 2.面向对象与面向过程(理解) 1.面向过程:强调的是功能行

小涛今天没敲代码的博客 418

day07面向对象复习+课后练习

day07面向对象复习+课后练习 第一部分:面向对象上 两个要素:类和对象 类是对一类事物的描述,是抽象的、概念上的定义 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。 创建Java自定义类 步骤: 定义类(考虑修饰符、类名) 编写类的属性(考虑修饰符、属性类型、属性名、初始化值) 编写类的方法(考虑修饰符、返回值类型、方法名、形参等) 类的结构:属性和方法 类的成员之一:属性 ### 变量的分类:成员变量与局部变量 类和对象的创建 创建对象语法: 类名 对象名 = n

WKF903582415的博客 1069

Java基础 - 面向对象思想,匿名对象,封装

(1)Java中最基本的单位是类,Java中用class描述事物也是如此* 成员变量 就是事物的属性;和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。* 成员方法 就是事物的行为;和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。(2)类和对象的概念* a:类:是一组相关的属性和行为的集合* b:对象:是该类事物的具体体现自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

2301_82241819的博客 688

黑马程序员——3.面向对象(堆栈、匿名、封装、构造函数、this、静态、数组工具类)

Java面向对象(堆栈、匿名、封装、构造函数、this、静态、数组工具类)

u012126525的专栏 597
上一篇: java 面向对象练习3 对象数组
下一篇: java 面向对象练习5 方法重载与可变形参
wisdomcodeinside
博客等级 码龄7年 29粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值