`

Java初学者容易混淆的几个问题

阅读更多

1.String类和StringBuffer类

  它们都是处理字符串的类,但是它们有一个最大的区别,那就是。

eg1:

......
//omit some code
String s1="You are hired!";
System.out.println(s1.replace(′h′,′f′));//用f把字串中的h替换了
System.out.println(s1);
......
//omit some code

  运行结果:

   You are fired!
   You are hired!

  结果分析:

  从结果,明显可知,s1的值并没有被改变,而第一行结果只是屏幕内容的替换.

  eg2:

......
//omit some code
StringBuffer s2=new StringBuffer("Hello from
Java!");
s2.replace(6,10,"to");
System.out.println(s2);
......
//omit some code

  运行结果:

  Hello to Java!

  结果分析:

  显然,s2的值已改变.
 
  2.位逻辑与条件逻辑

  首先声明, 为了与位逻辑更好区分开来,我把通常所说的逻辑取了个别名叫做条件逻辑.

  它们都有各自的操作符,位逻辑操作符有:&(与运算),^(异或运算),|(或运算);条件逻辑操作符有:&&(并
且),||(或者)。

  位逻辑运算通常是针对两个数而言,实行位操作;而条件逻辑运算是针对两个条件表达式而言,实行条件操作.其实,位逻辑操作符一样可以实现条件操作,但是此时有一个重要的区别:用位操作符时,不管操作符两边的条件表达式成不成立,它都要通通进行运算判断,而条件逻辑操作符不一样了,如果通过左侧的操作数就可以进行它们需要的判断,那么它就不会再计算右侧的操作数了,这种情况叫短路.废话少说!且看下例.

  eg1:

......
//omit some code
double value=0;
if(value!=0 && 1/value<1000){
System.out.println("The value is not too small.");
}
else{
System.out.println("The value is too small.");
}
......
//omit some code

  运行结果:

  The value is too small.

  结果分析:

  照理说应会出现除数为0的错误,但是我刚才说了,由于条件逻辑操作符是短路操作符,显然,value!=0不成立,立即就可作出判断应执行else后的语句,所以它就不再会运算判断1/value<1000了.如果不懂请再看一
例:

   eg2:

......
//omit some code
double int1=0,int2=1,int3=1;
if(int1!=0 & (int2=2)==1){}
System.out.println("int2="+int2);
if(int1!=0 && (int3=2)==1){}
System.out.println("int3="+int3);
......
//omit some code

  运行结果:

   int2=2.0
   int3=1.0

  结果分析:

  我想不用我分析了,你应该懂了吧.

  3.实例变量与类变量

  可以通过两种方法在类中存储数据───作为实例变量和类变量.实例变量是特定于对象的,如果你有两个对象(即一个类的两个实例),每一个对象中的实例变量独立于另一个对象中的实例变量的;另一方面,两个对象的类变量均指向相同的数据,并因此面保存相同的值,换句话说,类变量被类中的所有对象共享.差点忘了,它们在形式上的区别,类变量在声明时比实例变量多一个static.

  eg:

class data
{
public int intdata=0;//显然,intdata在这儿是实例变量
}
public class exam
{
public static void main(String[] args)
{
data a,b;
a=new data();
b=new data();
a.intdata=1;
System.out.println("b.indata="+b.intdata);
}
}

  运行结果:

  b.intdata=0

  结果分析:

  可以看出,a.intdata的值虽然变了,但并没有影响b.intdata.但是如果在data类中声明intdata时,在其前面加上static就变成类变量了(即:public static int intdata=0;),则此时运行结果会变为:

  b.intdata=1

  这次a.intdata值的改变可把b.intdata影响了,事实上,对象a和b的类变量均指向相同的数据,所有值一样,这就是类变量的作用。
分享到:
评论

相关推荐

    java初学者福音

    【Java初学者福音】 在Java学习的初期,掌握一些核心概念和最佳实践是至关重要的。以下将详述几个关键知识点,帮助你扎实基础,避免常见错误。 1. 面向对象的设计法则: 面向对象编程(OOP)是Java的核心。一些...

    JAVA混淆编译工具

    选择JAVA混淆编译工具时,应考虑以下几个因素: - **项目规模**:大型项目可能需要更复杂的混淆策略。 - **安全性需求**:根据项目的敏感程度选择不同级别的工具。 - **许可证类型**:开源项目应选择符合GPL等开源...

    Java框架对初学者产生束缚的原因及解决方法.pdf

    首先,Java 框架的配置文件较为复杂,初学者在面对其时容易产生混淆、困惑。例如,在使用 Spring 框架的配置文件时,需要将其他两个 Java 框架进行有机的结合,这会使初学者感到困惑,从而影响软件的开发。 其次,...

    给C++初学者的忠告

    ### 给C++初学者的忠告 #### 1. C++是一门复杂的语言 - **解释**:作为一门功能强大的编程语言,C++具备高度的灵活性与控制力,但这也意味着它比其他一些现代语言(如Python或Java)更难上手。初学者在学习过程中...

    java反编译软件

    对于初学者,了解反编译的基本概念和工具,可以帮助他们在遇到不熟悉的库或类时,更好地进行问题排查和学习。而对于经验丰富的开发者,反编译则能成为他们解决问题和深入理解Java平台的有力武器。

    Android-混淆分享里面包含了示例代码和markdown文件

    在Android应用开发中,安全和反编译是一个重要的议题,特别是对于那些包含敏感代码或商业逻辑的应用来说。"Android-混淆分享"项目提供了一个...无论是初学者还是经验丰富的开发者,这个资源都将是一份宝贵的参考资料。

    JAVA反编译工具

    对于初学者或者不熟悉复杂命令行工具的开发者来说,这样的工具尤其受欢迎,因为它降低了使用反编译技术的门槛。 标签“JAVA 反编译 工具”进一步明确了主题,强调了该工具与Java编程语言及其反编译过程密切相关,...

    java_disabuse.rar_java disabuse

    Java编程语言是世界上最流行的开发平台之一,广泛应用于企业级应用、移动应用...通过以上知识点的学习和实践,Java初学者可以逐步消除学习过程中的困惑,加深对Java语言的理解,并为更高级的编程概念打下坚实的基础。

    RSA,AES,SHA1,RSA-SHA1 Sign加密算法C++/Java封装

    所以当时在cryptopp的基础上做了一些封装,并且将RSA,AES,SHA1,RSA-SHA1 Sign分离成独立的类,并且添加了Base16和Base64编码算法,使用这几个加密算法,几乎可以解决一般项目对通信安全的需要。 Java部分使用了JDK...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...

    解决java中的疑惑

    本文将深入探讨几个常见的问题,以帮助初学者更好地理解和使用Java。 1. **内存管理与垃圾回收**:Java引入了自动内存管理机制,即垃圾回收(Garbage Collection)。初学者可能会对何时以及如何进行垃圾回收感到...

    浅谈JAVA软件开发的几大误区.pdf

    Java的设计理念是简洁和可维护,但初学者往往觉得其冗长的类库和繁琐的注解令人望而生畏。理解Java的核心概念,如封装、继承和多态,以及合理选择和运用框架,可以帮助开发者减少困惑。 其次,忽视性能优化是另一个...

    KNN--Java.zip_KNN java_Knn-java_java KNN_knn

    这份文档可能涵盖了以下几个方面: 1. **KNN算法原理**:解释了KNN的基本概念,包括K值的选择、距离度量方法、邻居的选择策略(如使用最近邻或加权最近邻)、处理类别不平衡的方法等。 2. **数据预处理**:KNN算法...

    java验证码生成类

    在Java中,生成验证码通常涉及以下几个步骤: 1. **生成随机字符串**:使用`Random`类或者更安全的`SecureRandom`类生成随机数字和字母的组合。可以设置字符串长度,字符集(包括大小写字母和数字)。 2. **绘制...

    java decompiler.rar

    对于初学者来说,了解反编译原理和工具可以帮助他们更好地理解Java运行机制,并在遇到没有源码的库时找到解决问题的途径。同时,开发者也可以利用这些工具来保护自己的代码,通过混淆和加密等手段增加反编译的难度。...

    java反编译工具

    Luyten的用户界面现代化,对初学者和专业开发者都非常友好。 使用这些反编译工具有时可能无法完全恢复原始的源代码格式,因为编译过程会丢失一些元数据,例如原始的行号和某些特定的编程结构。然而,它们通常能提供...

    javadecompiler.7z

    总的来说,"javadecompiler.7z"这个压缩包提供了一个方便的Java反编译解决方案,无论是对于初学者还是经验丰富的开发者,都能在理解和分析字节码时派上用场。正确使用这类工具,可以增强我们的开发能力,提高问题...

    java面试题目与技巧1

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

Global site tag (gtag.js) - Google Analytics