A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾存双 中级黑马   /  2012-7-13 23:00  /  1811 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 贾存双 于 2012-7-13 23:03 编辑

import java.util.* ;
public class Message_zh_CN extends ListResourceBundle{
private final Object data[][] = {
  {"info","贾存双,{0}!"}
} ;
public Object[][] getContents(){    //覆写的方法 ;
  return data ;
}
} ;
这是用类写的一个资源文件。
===================================
import java.util.* ;
import java.text.* ;
public class ListDemo{
public static void main(String args[]){
  Locale zhloc = new Locale("zh","CN") ;
  ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhloc) ;
  String str = zhrb.getString("info") ;
  System.out.println("中文显示:" + MessageFormat.format(str,"你一定要黑马!加油!")) ;
}
} ;
运行结果:


为什么用 final 声明的的二维数组还可以被改变

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 这个问题,确实困扰很多人

查看全部评分

4 个回复

倒序浏览
final变量被赋值之后不能改变是指不能再被赋值
赋给final变量一个对象后,更改这个对象本身是可以的
比如数组:

  1. public class FinalTest{
  2.         public static void main(String[] args){
  3.                 final String[] s={"123","456"};

  4.                 System.out.println(s[0]);
  5.                 s[0]="qwe";
  6.                 System.out.println(s[0]);
  7.         }
  8. }
复制代码
s[0]="qwe"时
final定义的s变量还是指向这个数组,
只是这个数组里的内容改变了
回复 使用道具 举报
这个还真不知道
回复 使用道具 举报

回帖奖励 +5 黑马币

final修饰的成员变量可以通过new对象来不断赋值;
final修饰的局部变量可以通过不断调用所属方法来不断赋值。
所谓的final修饰的成员不能被修改是指不能被同等级成员修改,对上级成员无效。
像final修饰的局部变量,就不能被方法内的成员修改。而成员方法,成员变量也是在一个类里同级别的。
回复 使用道具 举报
对于final修饰符,在Java声明类、属性和方法时,可以使用关键字final来修饰,final所标记的成分具有终态的特征,表示最终的意思。final的具体使用规则如下:
1、final标记的类不能被继承
2、final标记的方法不能被子类重写
3、final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次
4、final标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用
5、final标记的局部变量可以只声明不赋值,然后再进行一次性的赋值
6、final一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以避免被误用。如果将引用类型(即任何类的类型)的变量标记为final,那么,该变量不能指向任何其它对象,但可以改变对象的内容,因为只有引用本身是final的。
注意红色字体部分,对于二维数组来说,只是定义了内存里一段连续的地址空间,它是引用类型的,数组只是指向你存的数据的空间,所以你可以修改二位数组的内容。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马