java中声明变量常见错误,列举java中变量使用常见的错误

列举java中变量使用常见的错误

关注:191  答案:3  mip版

解决时间 2021-01-31 02:55

e6cb1a03ad541b3098697807b7bf1798.png

提问者假正经

2021-01-30 20:52

列举java中变量使用常见的错误

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家啾一口软脸

2021-01-30 22:30

广义的说,在 Java 中,凡是可以指向一个对象或包含一个值的标识符,都可以称为变量。

变量的内容,有可能是一个值,也有可能是指向一个对象的引用。

当变量的类型为基本型别(short, byte, int, long, float, double, boolean, char)时,变量的内容是一个值;当变量的类型为 Object 及其子类时,变量的内容是指向一个对象的引用。例如:

[java] view plain copy

int a = 3;

String s1 = "Hello!";

String s2 = s1;

这时变量 a 的内容就是 3,变量 s1 的内容就是指向一个字符串对象的引用,s2 则和 s1 一样指向该对象。如果执行了下面的语句:

[java] view plain copy

a = 4;

s1 = "Hello again!";

这时变量 a 的内容被改成了 4,s1 的内容改成了指向另一个字符串对象("Hello again!")的引用。s2 则还是指向原先的那个字符串("Hello!")。

接下来谈方法的调用。方法的调用是传值的。例如下面这个方法:

[java] view plain copy

void f(int i, String s) {

i = 100; // i 的值改成了 100

s = "Hi!"; // s 现在指向字符串 "Hi!"

}

当调用 f(a, s1) 时,变量 a 和 s1 的值被赋给参数 i 和 s,然后才执行 f 方法。也就是说,无论 i 和 s 怎么变,都不会影响 a 和 s1 的值。

接下来是一个稍微复杂的例子。首先定义一个方法:

[java] view plain copy

void f(int i, List list) {

i = 10;

list.add("Hello!");

}

假设再执行下面的句子:

[java] view plain copy

int a = 3;

List l = new ArrayList();

f(a, l);

那么执行之后是什么结果呢?

i 和 a 是两个不同的变量,i 的值变了不会影响 a,所以 a 的值还是 3;

list 和 l 是两个不同的变量,但它们指向同一个 List 对象。f 的执行过程中给这个 List 对象添加了一个元素,那么执行完之后,通过 l 变量我们可以取到这个元素:

[java] view plain copy

l.get(0); // "Hello!"

但如果 f 这样写:

[java] view plain copy

void f(int i, List list) {

i = 10;

list = new ArrayList();

list.add("Hello!");

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼薯片软妹

2021-01-30 23:58

1. Null 的过度使用

避免过度使用 null 值是一个最佳实践。例如,更好的做法是让方法返回空的 array 或者 collection 而不是 null 值,因为这样可以防止程序抛出 NullPointerException

2. 判断相等

对象使用equals,数值类型用==

3. 找不到符号

当你在代码中引用一个没有声明的变量时一般会报这个错误

4. 类型不兼容

如不能将字符串赋值给一个整型变量

5. 数组越界(java.lang.ArrayIndexOutOfBoundsException)

6. 变量没被初始化

e6cb1a03ad541b3098697807b7bf1798.png

2楼往事叫我剪短发

2021-01-30 23:16

引用数据类型数组的元素是对象引用,没有实际的值,需要给它实例。例如

date days = new date[5];

days[0]  = new date(2000,12,3)

每一个days都要去分配。

而基础类型都有默认初始值。

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值