java如何动态定义变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何动态定义变量相关的知识,希望对你有一定的参考价值。

Java是不能实现动态的变量名的,Java的变量名在源代码中必须的确定的。根据你的代码,你可以使用数组,List或Map,如代码:
int n[] = new int[3];
for (int i = 0; i < 3; i++)
n[i] = 5;


List<Integer> n = new ArrayList<Integer>();
for (int i = 1; i < 4; i++)
n.add(5);


Map<String, Integer> n = new HashMap<String, Integer>();
for (int i = 1; i < 4; i++)
n.put("n" + i, 5);

这个是最基本的概念,如果你需要进一步了解Java的相关知识,可以秒秒学学习下
参考技术A Java是一门静态语言,也就是需要经过编译之后确定变量类型,不能动态定义变量。
Java提供了集合保存一些变量,动态添加删除变量,还可以扩充数组大小。
参考技术B 额~~你最好表述清楚一点。

JAVA中静态变量如何动态赋值?

两个类:Demo和Val
在Demo中定义一个静态变量t1
Public class Demo
static int t1;
public static void main(String[] args)
int t2 = 123456;
t1 = t2+5;
System.out.println(t1);
System.out.println(t2);


在当前类中运行,t1的值是t2加5后的值,但是在Val类中,t1的值是0,也就是说并没有给t1真正的赋上值,请问如何才能将这样的计算结果赋值给静态变量?使其在其它类中也可以同样获得被赋值后的新值?

谢谢!

Java赋值:

1、赋初值:定义变量的同时赋值

    例如: int a = 5;

2、先定义后赋值

    例如:

    int a;

     a = 5+5;

这两种都是可以的,你选择的是第二种,先定义后赋值。

你在val类中创建Demo类的实例,只是获得了t1的初值,而给t1赋值的部分放在了main()方法里,方法需要调用才能执行的(构造方法除外),因为你没有调用t1的赋值方法main(),所以t1未赋值,int 默认值为0 ,所以打印的结果是0;

你要在Val类中实例化后调用main()方法,

Demo demo = new Demo();

demo.main(args);

这样就t1就会被赋值了,不过java开发中不建议调用main()这种方式,

建议你单独给t1变量加个赋值方法或者构造方法

例如:

package test20210104;

public class Demo

static int t1;

public void setT1(int t2)

t1 = t2+5;

调用的时候给t1赋值

package test20210104;

public class Val

public static void main(String[] args)

Demo demo = new Demo();

demo.setT1(1325);

System.out.println(demo.t1);

追问

您好!不好意思我没太看明白,我是刚刚开始学习JAVA,刚刚学到变量这部分的时候有了这样的一个疑问的。

t1的值是在t2的方法中,通过运算或者调取某些数据后再加工后得到的值赋给t1的。如果给t1单独创建一个类,那么t2的值也无法跨类传递啊?
我现在是这样想,比如在某一个类的某个方法中,计算出来一个值,想传递给一个变量,这个变量的值在全部程序中进行调用,那么比较合适的方式是什么样的呢?
谢谢您!

追答

1、变量需要给他赋值才能使用,
变量可以在定义的时候就给他赋值,例如:int a = 3;
也可以先声明变量b,
int b;
然后再给变量b赋值:
b=9;
给变量赋值的时候可以直接赋数值,也可以通过计算获得一个数值然后赋值给b变量(就是通过方法获得)
例如:有个方法是把传入的值乘以3,然后把结果返回给调用者。
public int method(int n)
return n*3;

这个时候如果调用method方法给b赋值。
b = method(6);
传入了一个6,所以方法method把6乘以3的结果返回给调用者b
所以b的值是18 。
普通方法本身是需要调用的,否则不会执行。
方法大致有下面三种
1、普通方法,自定义的各种计算方法,此类方法需要调用才能执行,
例如:C类里面有个method方法,该方法把自己增加5。
class C
public int method(int n)
return n+5;




A类有个变量b刚好想要把自己增加5,那他就调用C类的method方法.
class A
int b = 3;

C c = new C();

b = c.method(b);


这时候b的值就是8了。

2、构造方法,类实例化的时候自动执行,
A类有构造方法如下:

class A
int b;

public A()
public A(int b)
this.b = b;




A类中定义了一个int变量b,注意以下两种实例化方式的差别。
class F
public static void main(String[] args)
A a = new A();

A a = new A(9);



A a = new A(); 实例化A类时调用默认构造函数,没有给任何变量赋初值,所以b=0;
A a = new A(9);调用了有参数的那个构造函数,所以把9赋值给了b,b=9。
3、主方法(主函数)
主方法会自动执行,一般用来输出一些结果
public static void main(String[] args)
System.out.println("hello world");

参考技术A 写一个方法,然后用方法的参数t2给t1赋值,另一个类val用的时候,先用demo的一个对象,调用方法,修改t1

以上是关于java如何动态定义变量的主要内容,如果未能解决你的问题,请参考以下文章

c#或java如何用循环定义多个变量

在java中动态定义集合或对象类型变量

在Java接口的实现类中如何调用这个接口中定义的变量?

JAVA中静态变量如何动态赋值?

如何在python中动态定义变量?

Oracle - 如何使用动态绑定参数定义动态 SQL?