java中变量命名和引用变量的一个坑

这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西。第二个主题,就是讨论一下对象引用变量的一个注意点。

如果你对命名规则很熟啦,就直接看第二个内容吧。(上边的图稍微有点顺序紊乱啊)



一、java中变量的命名规则

大多数语言的命名规则是相似的,只有一些微小的差别。

  • 变量的第一个位置,可以是字母,下划线(_),美元符($) (这个在c/c++,python中是不行的)(注意:不能是数字哦,一想就知道啦为什仫)
  • 其他的位置可以是数字,字母,下划线
  • 不能使用java中的关键字

java中的关键字有:

  boolean   byte   char   double   float   int   long   short   public   private
  protected   abstract final    native   static   strictfp   synchronized   transient   volatile   if
  else     do    while    switch   case   default for   break   continue   assert
  class   extends   implements   import   instanceof   interface   new package   super   this
  catch   finally   try   throw   throws   return   void   const   goto   enum

java的命名规则就说这么多,变量除了注意命名规则之外,还要注意命名规范



二、对象引用变量的注意之处

基本变量没有这个毛病,通过代码来引入问题。

1 public class Test {
2         public static void main(String[] args) {
3                 int i1 = 10;
4                 int i2 = i1;
5                 i1 = 10000;
6                 System.out.println("i1 = " + i1);
7                 System.out.println("i2 = " + i2);
8         }
9 }

预测一下结果吧。OK,如你所料:

在看一段代码,如果预测结果正确,就不要往下看啦。

 1 public class Test {
 2         public static void main(String[] args) {
 3                 Test t = new Test();
 4                 Test.Dog d1 = t.new Dog(1);//若看不懂,只需看成创建了一个Dog类一个实例变量
 5                 Test.Dog d2 = d1;//把d1赋值个d2,此时d2的age是不是1?
 6                 d1.age = 10;//重新为d1的age属性赋值成10
 7                 //打印结果
 8                 System.out.println("dog1‘s age = " + d1.age);
 9                 System.out.println("dog2‘s age = " + d2.age);
10         }
11
12       //为了节省空间能一眼看完,此处写成内部类
13         class Dog {
14                 //为了方便把属性定义为public,实际中最好不要
15                 public  int age;
16                 public Dog(int age) {
17                         this.age = age;
18                 }
19
20         }
21 }

猜猜结果:

猜对没有,为什么没有更改d2的age,d2的age从1变成了10?

基本变量中存的就是实际值,而对象引用变量中存的是一个能找到实际值得数据(可以看成c语言中的地址),所以,当d1赋值d2时,只是把那个能找到实际对象的数据赋值给了d2,内存中只有一个Dog的实例,d1,d2指向同个变量。

所以,d1改变object的值时,d2因指向相同的object,所以,结果就不言而喻啦。

这说得还远远不够,想深入了解,请找书看。



Challenges are what make life interesting and overcoming them is what makes lifes meaningful.

时间: 09-09

java中变量命名和引用变量的一个坑的相关文章

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Parent{ } class Child extends Parent{ int num = 4; } */ /* 样例3: class Parent{ void show(){ System.out.println("Parent Show!"); } } class Child exten

java中String对象和String变量

java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看到关于String s = new String("XYZ") + new String("XYZ");到底创建几个对象的讨论,觉得比较有意思,在此总结一下. 在JAVA中除了8种基本类型之外,其他的都是类对象及其引用.所以 "XYZ"在JAVA中是一个String对象,对于String类对象来说它的对象值是不能修改的,也

java中的关键字static(静态变量)和final定义常量

1 package point; 2 3 class Point { 4 5 int x = 0; 6 int y = 0; 7 static int z = 100; // 定义静态变量z,类变量 8 static final double PI = 3.1415926;// final定义常量,它的值在运行时不能被改变 9 10 Point(int a, int b) { 11 //PI=3.1415926; 12 /* 13 * 当使用静态常量的时候,不能在构造函数中初始化, 因为静态时,

浅谈Java中的对象和引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通

java 中值传递和引用传递(转)

java中给函数传递参数的方式有两种:值传递和引用传递.一般而言,基本类型是值传递:引用类型是引用传递.但传值时到达发生了什么? 1.基本类型 8个基本类型(byte,short,int,long,float,double,char,boolean)是值传递. 1 public class ValueTest { 2 3 public static void main(String[] args) { 4 int a = 10; 5 changeVal(a); 6 System.out.prin

JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用)的作用.同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. JAVA中的四种引用 四种引用中,软引用.若引用.虚引用都需要相关类来创建.创建的时候

JAVA中MESSAGEBOX,静态类直接引用

原文:JAVA中MESSAGEBOX,静态类直接引用 package cisdi.mes.wrm.mcode.serviceImpl; import javax.persistence.Entity; import javax.swing.JOptionPane; @Entity public class McodeTest { /** * @param <WrmMtlUomClassesTlService> * @param args */ public static void main(S

Java中的四种引用及其应用场景是什么

1.强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用.强引用即使当前的内存不足也不会被回收而是由JVM抛出OutOfMemoryError 错误.如果想要中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象. String str = "hello"; // 强引用 str = null; // 取消强引用 2.软引用 内存空间足够的时候则正常使用,内存空间不足的时候则会被垃圾回收器回收.可用于图片缓存中,

Windows下Java File对象创建文件夹时的一个"坑"

import java.io.File; import java.io.IOException; public class DirCreate { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String dirStr="D:"; File dir=new File(dirStr); System.out.println("====