java方法调用及传参
静态方法:有static修饰的方法。
非静态方法:没有static修饰的方法。
- 方法调用:
一静态方法调用 静态方法/属性
1)一个类:直接调用。
2)不同类/不同文件:
a: 类名.属性名/方法名
b:实例化对象。 类名 对象名 = new类名();
对象名. 属性/方法
二静态调用 非静态方法/属性
都先实例化对象。 类名 对象名 = new类名();
对象名. 属性名/方法名
一非静态调用静态方法
二非静态调用非静态方法
1)同一类中:直接调用
2)不同类中:
a: 类名 . 方法(只能是静态属性)
b:实例化对象
总结:可直接调用的三种情况
1.一个类中 静态调静态 。
2. 一个类中 非静态调用 静态/非静态。
3. 静态 类名.静态属性/静态方法。
public class Demo03{
int age;
public static void main(String []args){
System.out.println(Demo04.name);//静态调用静态1
Demo04.eat();
Demo04 d = new Demo04();//静态调用静态2
System.out.println(d.name);
d.eat();
Demo03 d1 = new Demo03();//静态调用非静态
d1.method();
System.out.println(d1.age);
}
public void method(){
System.out.println("first method");
}
}
public class Demo04{
static String name = "张三";
public static void eat(){
System.out.println("肉夹馍");
}
}
public class Demo05{
static int age;
String name;
public static void main(String []args){
Demo05 d1 = new Demo05();//静态调非静态 实例化
d1.method();
}
public void method(){
System.out.println(age); //非静态调静态
method1(); //非静态调静态
System.out.println(name);//非静态调非静态
method2(); //非静态调非静态
System.out.println("first method");
}
public static void method1(){
System.out.println("second method");
}
public void method2(){
System.out.println("third method");
}
}
public class Demo06{
public static void main(String []args){
Demo06 d1 = new Demo06(); //静态调非静态 实例化
d1.method();
}
public void method(){
System.out.println(Person.name); //非静态调静态
Person.method1(); //非静态调静态
Person p = new Person(); //非静态调非静态 实例化
p.method2();
System.out.println("first method");
}
}
class Person{
static String name;
int age;
public static void method1(){
System.out.println("second method");
}
public void method2(){
System.out.println("third method");
}
}
public class Demo09{
//实参到形参是单向的,所以在传递过程中形参值发生改变不会影响实参
public static void main(String []args){
int i =1;
String s = "ww";
Demo09 d = new Demo09();
d.method(i,s);
System.out.println(i);
System.out.println(s);
}
public void method(int i,String s){
i = 100;
s = "asd";
}
public void method1
}
public class ChuanDiZhi{
int x = 3;
public static void main(String args[]){
ChuanDiZhi p = new ChuanDiZhi();
p.x = 9;
show(p);
System.out.println(p.x);
}
public static void show(ChuanDiZhi p){
p.x = 4;
}
}
有无返回值
有void修饰,无返回值
int------------------>return int 类型的值
string-------------->return String类型的值
数据类型-------->return 当前数据类型值
返回类、集合、流等
方法的返回值类型必须和return之后的值数据类型一样
方法传递参数
形参:形式参数,在定义方法时所携带的参数。
实参:实际参数,方法调用时所传入的参数。
形参和实参的区别:
1形参只有在被调用的时候,才分配内存单元,在调用结束时立即释放内存单元
形参只在当前方法内部有效
2实参可以是常量、变量、表达式、方法 等。但是在进行方法调用前,必须要有确定的值。
3形参和实参在顺序、类型、长度、必须一致。
4实参到形参是单向的,
参数的传值方式
1值传递:在运行函数时,形参和实参在不同的内存位置之中,形参将实参的值复制一份。在函数运行结束时,形参被释放,实参的值不会发生改变。
2地址传递:在运行函数时,传给形参的是实参的地址,那么形参被修改时,实参也会发生改变。
java方法调用及传参的更多相关文章
- java方法中,传参是传值还是传址问题(对比C语言、C#和C++)
问题引出: 编写一个简单的交换值的小程序,如果我们只是简单地定义一个交换函数接收两个数,在函数内部定义一个中间变量完成交换.那么当我们把a,b两个实参传给这个函数时,往往得不到预期的结果.这是为什么呢 ...
- python 传入任意多个参数(方法调用可传参或不传参)
1.可传参数与不传参数,在定义中给参数设置默认值 class HandleYmal: """ 获取测试环境的配置 """ def __ini ...
- Js调用Java方法并互相传参
Js通过PhoneGap调用Java方法并互相传参的. 一.JAVA代码 写一个类,该类继承自Plugin并重写execute方法. import org.json.JSONArray; import ...
- 难道同事:Java 方法调用到底是传值还是传引用
Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...
- 难住了同事:Java 方法调用到底是传值还是传引用
Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...
- vue:子组件通过调用父组件的方法的方式传参
在本案例中,由于子组件通过调用父组件的方法的方式传参,从而实现修改父组件data中的对象,所以需要啊使用$forceUpdate()进行强制刷新 父组件: provide() { return { s ...
- Java方法调用机制
最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中.奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制.本文介绍3个点: ① 该问题举例说明 ② 简要阐述Java内 ...
- 第47篇-解释执行的Java方法调用native方法小实例
举个小实例,如下: public class TestJNI { static { // 程序在加载时,自动加载libdiaoyong.so库 System.loadLibrary("dia ...
- 脚本语言丨Batch入门教程第四章:调用与传参
今天是Batch入门教程的最后一章内容:调用与传参.相信通过前面的学习,大家已经掌握了Windows Batch有关的基础知识和编程方法,以及利用Windows Batch建立初级的编程思维方式.今后 ...
随机推荐
- PHP/HTML混写的四种方式
[整理]PHP/HTML混写的四种方式 PHP作为一款后端语言,为了输出给浏览器让浏览器呈现出来,无可避免的要输出HTML代码,下文介绍下我用过的三种PHP/HTML混编方法 1.单/双引号包围法 ...
- [Linux] 029 脚本安装包
1. 脚本安装包 脚本安装包并不是独立的软件包类型,常见安装的是源码包 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装 非常类似于 Windows 下软件的安装方式 ...
- Netty之Page级别的内存分配
Page 级别的内存分配: 之前我们介绍过, netty 内存分配的单位是chunk, 一个chunk 的大小是16MB, 实际上每个chunk, 都以双向链表的形式保存在一个chunkList 中, ...
- mybatis小总结
mybatis是一个持久层的框架,是一个不完全的orm框架.sql语句需要程序员自己去编写,但是mybatis也有映射(输入参数映射,输出结果映射) mybatis入门门槛不高,学习成本低,让程序员把 ...
- Struts2之下载
下载页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...
- Spring Boot 静态资源处理,妙!
作者:liuxiaopeng https://www.cnblogs.com/paddix/p/8301331.html 做web开发的时候,我们往往会有很多静态资源,如html.图片.css等.那如 ...
- Java中的I/O
1.Java中的I/O分类 I/O分类: 输入流,输出流,或者字节流,字符流 I/O中的四个抽象基类: InputStream,OutputStream:两者属于字节流,前者输入,后者输出.一般后缀名 ...
- spring 配置属性细节
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/qilixiang012/article/details/28233811 概要(红色为上一篇所讲,蓝 ...
- C# 字符串的拆分
string str = "ABCD"; char[] strCharArr = str.ToCharArray(); //结果 //strCharArr[0]='A', //st ...
- Panabit的各种配置文件
Panabit的各种配置文件 1.启动配置文件路径:/etc/rc.local作用:这个文件里的内容是BSD启动后会自动执行的命令默认配置如下:fsck -y -t ufs /dev/ad0s2a & ...