当前位置: 首页 > news >正文

Java之Java基础八(方法)

  • 访问权限修饰符:常用的有public,private,protected,不写(为默认访问权限)
  • 需要有方法返回值类型,没有用void
  • 需要有方法名,在同一类中方法的签名不能重复方法签名:方法名+参数列表)【单纯方法名可重复】
  • 参数列表:数量,类型,顺序 --> 方法重载(方法名相同,参数列表不同,与返回值无关)【发生在编译阶段】
  • 方法必须有参数列表,可以为空但不能省略
  • 可以用关键字static,final等关键字修饰

一、修饰符

static(静态方法)

  •  static方法中不能使用this关键字

  • static修饰的方法,通过类名直接调用,不用创建对象(对象也可以调用),方便方法的调用

  • static修饰的方法,变量,代码块都是独一份的,便于共享

  • 静态方法中不能直接使用非静态方法(可以通过创建对象调用);非静态方法可以直接调用静态方法;同级别之间可以相互调用

  • static修饰代码块:无论在哪里书写,都是在main()方法中执行,多用于初始化,只加载一次

 //staticpublic class Person {private int age;private String name;public static String from;static {            //static修饰代码块,用于初始化System.out.println("用于初始化,执行更早");}public Person(int age, String name) {System.out.println("执行时间测试");this.age = age;this.name = name;}@Overridepublic String toString() {return "Person [age=" + age + ", name=" + name + ", from=" + from + "]";}public static void main(String[] args) {Person p1=new Person(132,"qwe");Person p2=new Person(13,"qwesd");System.out.println(p1.name);System.out.println(p2.name);p1.from="china";         //static修饰的变量是独一份的,共享的,更改一处即更改全部System.out.println(Person.from);System.out.println(p1.from);System.out.println(p2.from);System.out.println(p2);System.out.println(p2);}public void objtest() {}public static void classtest() {Person p3=new Person(2,"name");p3.objtest();     //在静态方法中调用非静态方法用对象}}

 二、方法参数

  • 提高了方法的灵活性
  • 类型:分为形参(方法定义时设置的参数)与实参(方法调用时设置的参数)
  • 传递方式:值传递引用传递【java中只有值传递】
  1. 值传递:方法调用时,实参通过把它的内容副本传入方法内部,此时形参接收实参的一个拷贝,会开辟新空间
  2. 引用传递:‘引用’指使用真实内容的地址值,不会开辟新空间

可变参数

  •  指在调用方法时传入不定长度的参数,本质是基于数组实现的
  • 可变参数是指长度可变,但变量种类不行
  • 使用:在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值【即String...var】
  • 可变参数可以不接收参数值,也可以接收多个参数值【以数组方式接收】
  • 可变参数只能作为方法的最后一个参数使用->即一个方法只能拥有一个可变参数
  • 可变参数在编译为字节码后,在方法签名中就是以数组形态出现的,若两个方法的签名是一致的,不支持方法的重载
  • 与数组区别:可变参数可以传入数组类型的数据或直接传入多个参数,数组类型作为参数只能传数组类型参数【还不能空传】
 public class Test {public static void main(String[] args) {//可变参数int[] num={1,2,3};add(num);add(1,2,3);}public static void add(int...nums) {int sum=0;for(int num:nums) {sum+=num;}System.out.println(sum);}}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring webflux基础核心技术
  • Jetson-AGX-Xavier上 时间同步方案GPS+PPS+NTP+PTP
  • 深入理解C++中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符重载
  • 【laravel+Easyswoole】
  • 企业网三层架构
  • slf4j日志框架和logback详解
  • C++入门基础(2)
  • 论文翻译:Rethinking Interpretability in the Era of Large Language Models
  • 设计模式使用场景实现示例及优缺点(行为型模式——策略模式)
  • leetcode 147. 对链表进行插入排序
  • Kafka基础入门-代码实操
  • 易懂的吉文斯(Givens)变换(一)
  • 如何使用Gunicorn配置SSL/TLS加密Web服务
  • 序列化与反序列化及不同序列化方式的性能对比
  • 第四章 Redis(2023版本IDEA)
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Bootstrap JS插件Alert源码分析
  • CSS 三角实现
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • magento 货币换算
  • magento2项目上线注意事项
  • mongo索引构建
  • passportjs 源码分析
  • Python学习笔记 字符串拼接
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spark学习笔记之相关记录
  • storm drpc实例
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对象引论
  • - 概述 - 《设计模式(极简c++版)》
  • 给新手的新浪微博 SDK 集成教程【一】
  • 规范化安全开发 KOA 手脚架
  • 嵌入式文件系统
  • 协程
  • 学习使用ExpressJS 4.0中的新Router
  • 《码出高效》学习笔记与书中错误记录
  • #### go map 底层结构 ####
  • #DBA杂记1
  • #QT(QCharts绘制曲线)
  • (4)Elastix图像配准:3D图像
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (JS基础)String 类型
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (第30天)二叉树阶段总结
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET 漏洞分析 | 某ERP系统存在SQL注入