`
xuedong
  • 浏览: 299114 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

操作符笔记-第一天

    博客分类:
  • java
阅读更多

在最底层,Java中的数据是通过使用操作符来操作的。

Java是建立在C++基础之上的,所以C和C++程序员应该非常熟悉Java的大多数操作符。当然,Java也做了一些改进与简化。

3.2 使用Java操作符

操作符接受一个或者多个参数,并生成一个新值。几乎所有的操作符都只能操作“基本类型”。例外的操作符是“=”,”==”,!=”,这写操作符能操作所有的对象。除此之外,String类支持“+”,”+=”

3.3 优先级

当一个i阿表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。最简单的规则就是先乘除后加减。程序员经常会忘记某些优先规则,所以应该用括号明确规定计算顺序。

 

Java代码 复制代码 收藏代码
  1. //: Precedence.java   
  2. public class Precedenece {   
  3.     public static void main(String[] args) {   
  4.         int x = 1 , y = 2 , z = 3;   
  5.         int a = x + y - 2 / 2 + z;   
  6.         int b = x + ( y - 2 ) / ( 2 + z );   
  7.         System.out.println("a = "+a+"\tb = "+b);   
  8.     }   
  9. }   
  10. /* Output:  
  11.  * a = 5    b = 1  
  12.  *///:~  
//: Precedence.java
public class Precedenece {
    public static void main(String[] args) {
        int x = 1 , y = 2 , z = 3;
        int a = x + y - 2 / 2 + z;
        int b = x + ( y - 2 ) / ( 2 + z );
        System.out.println("a = "+a+"\tb = "+b);
    }
}
/* Output:
 * a = 5    b = 1
 *///:~
 

 

 

 

3.4 赋值

赋值使用操作符“=”。它的意思是取”右值“把它复制给”左值“

  1. ”右值“可以是任何常数,变量或者表达式。
  2. “左值”必须是一个明确的已命名的变量。

对基本数据类型的赋值是很简单的。基本类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到另一个地方。

但是在为对象“赋值”的时候,情况却发生了变化。“将一个对象赋值给另一个对象”,实际上是将“引用”从一个地方复制到另一个地方。这意味着假若对象使用 c=d 那么c和d都指向原本只有d指向的对象。

Java代码 复制代码 收藏代码
  1. //: Assignment.java   
  2. // Assignment with objects is a bit tricky   
  3.     
  4. class Tank {   
  5.     int level;   
  6. }   
  7.     
  8. public class Assignment {   
  9.     public static void main(String[] args) {   
  10.         Tank t1 = new Tank();   
  11.         Tank t2 = new Tank();   
  12.         t1.level = 9;   
  13.         t2.level = 48;   
  14.         System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level);   
  15.         t1 = t2;   
  16.         System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level);   
  17.         t1.level = 27;   
  18.         System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level);   
  19.     }   
  20. }   
  21. /* Output:  
  22.  * t1.level:9   t2.level:48  
  23.  * t1.level:48  t2.level:48  
  24.  * t1.level:27  t2.level:27  
  25.  *///:~  
//: Assignment.java
// Assignment with objects is a bit tricky
 
class Tank {
    int level;
}
 
public class Assignment {
    public static void main(String[] args) {
        Tank t1 = new Tank();
        Tank t2 = new Tank();
        t1.level = 9;
        t2.level = 48;
        System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level);
        t1 = t2;
        System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level);
        t1.level = 27;
        System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level);
    }
}
/* Output:
 * t1.level:9   t2.level:48
 * t1.level:48  t2.level:48
 * t1.level:27  t2.level:27
 *///:~
 

这种特殊的现象通常称作“别名现象”,是Java操作对象的一种基本方式。直接操作对象内的域可以保持连个对象彼此独立,但是容易导致混乱。并且,违背了良好的面向对象车徐设计的原则。

3.4.1 方法调用中的别名问题

 

Java代码 复制代码 收藏代码
  1. //: PassObject.java   
  2. // Passing objects to methods may not be what you're used to .   
  3.     
  4. class Letter {   
  5.     char c;   
  6. }   
  7.     
  8. public class PassObject {   
  9.     static void f (Letter y) {   
  10.         y.c = 'z';   
  11.     }   
  12.     public static void main(String[] args) {   
  13.         Letter x = new Letter();   
  14.         x.c = 'a';   
  15.         System.out.println("1.\tx.c: "+x.c);   
  16.         f(x);   
  17.         System.out.println("2.\tx.c: "+x.c);   
  18.     }   
  19. }   
  20. /* Output;  
  21.  * 1.   x.c: a  
  22.  * 2.   x.c: z  
  23.  *///:~  
//: PassObject.java
// Passing objects to methods may not be what you're used to .
 
class Letter {
    char c;
}
 
public class PassObject {
    static void f (Letter y) {
        y.c = 'z';
    }
    public static void main(String[] args) {
        Letter x = new Letter();
        x.c = 'a';
        System.out.println("1.\tx.c: "+x.c);
        f(x);
        System.out.println("2.\tx.c: "+x.c);
    }
}
/* Output;
 * 1.   x.c: a
 * 2.   x.c: z
 *///:~
 

在许多编程语言中,方法参数将复制一份其传入参数的副本;但Java实际上只是传递了一个引用针对对象的操作都是引用

3.5 算术操作符

Java的算术操作符与其他大多数程序设计语言都是相同的。同时其也使用一种来自C和C++的简化符号同时进行运算与赋值操作(x+=4)

一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用仅仅是将较小类型的操作数提升为 int。

3.6 自动递增和递减

递增(++)和递减(–)运算是两中相当不错的快捷运算。这连个操作符各有两种使用方式,通常称为“前缀式”和“后缀式”。“前缀式“会先执行运算,再生成值;”后缀式“会先生成值,再执行运算。

Java代码 复制代码 收藏代码
  1. //: AutoInc.java   
  2. // Demostrates the ++ and -- operators.   
  3.     
  4. public class AutoInc {   
  5.     public static void main(String[] args) {   
  6.         int i = 1;   
  7.         System.out.println("i   : "+i);   
  8.         System.out.println("++i : "+(++i));   
  9.         System.out.println("i   : "+i);   
  10.         System.out.println("i++ : "+(i++));   
  11.         System.out.println("i   : "+i);   
  12.         System.out.println("--i : "+(--i));   
  13.         System.out.println("i   : "+i);   
  14.         System.out.println("i-- : "+(i--));   
  15.         System.out.println("i   : "+i);   
  16.     }   
  17. }   
  18. /* Output:  
  19.  * i   :1  
  20.  * ++i :2  
  21.  * i   :2  
  22.  * i++ :2  
  23.  * i   :3  
  24.  * --i :2  
  25.  * i   :2  
  26.  * i-- :2  
  27.  * i   :1  
  28.  *///:~  
//: AutoInc.java
// Demostrates the ++ and -- operators.
 
public class AutoInc {
    public static void main(String[] args) {
        int i = 1;
        System.out.println("i   : "+i);
        System.out.println("++i : "+(++i));
        System.out.println("i   : "+i);
        System.out.println("i++ : "+(i++));
        System.out.println("i   : "+i);
        System.out.println("--i : "+(--i));
        System.out.println("i   : "+i);
        System.out.println("i-- : "+(i--));
        System.out.println("i   : "+i);
    }
}
/* Output:
 * i   :1
 * ++i :2
 * i   :2
 * i++ :2
 * i   :3
 * --i :2
 * i   :2
 * i-- :2
 * i   :1
 *///:~
 
本文首发自:操作符笔记-第一天-蜘蛛网间

 

分享到:
评论

相关推荐

    RHCSA第一天笔记总结

    ### RHCSA第一天笔记总结 #### 一、计算机的基本组成 1. **计算机定义与组成** - **控制器**:负责计算机内部各个部件之间的协调工作,是计算机的大脑。 - **运算器**:用于执行各种算术运算和逻辑运算。 - **...

    c#完全笔记(共27天)

    【C#完全笔记(共27天)】是一份详尽的C#学习资源,旨在帮助初学者系统地掌握这门编程语言。这份笔记可能是由一位教育机构的学员在学习过程中整理而成,现在分享出来,以供更多的人学习和参考。 C#(发音为"C sharp...

    JavaScript笔记 第二天

    这篇笔记主要涵盖了JavaScript的第二天课程内容,旨在深入理解并掌握JavaScript的基础知识。以下是对这些知识点的详细解释: 1. **变量与数据类型** - 变量:JavaScript中的变量是用于存储数据的容器。使用`var`, ...

    js第四天 js第四天笔记

    第一天到第四天的学习通常会涵盖JavaScript的基础知识,包括数据类型、变量、操作符、流程控制以及函数。让我们详细地了解这些内容: 1. **数据类型**:JavaScript有七种数据类型,分为基本类型(Primitive Types)...

    JavaScript课堂笔记 第三天

    **JavaScript课堂笔记 第三天** 在JavaScript的学习过程中,第三天通常会深入探讨更多核心概念和语法,为后续的前端开发奠定基础。以下是一些关键知识点的详细讲解: 1. **变量和数据类型** - **变量**:在...

    ( 21天精通C++)学习笔记

    ### 第十一天至第十二天:操作符重载 #### 操作符重载简介 操作符重载允许我们扩展C++内置操作符的行为,使其能够应用于自定义数据类型。这是面向对象编程的一个重要特性,使得代码更加直观易读。 1. **操作符...

    MLDN李兴华13天java培训配套笔记Word版

    虽然缺少第一天的内容,但这个笔记集合包含了从第二天到第十三天的所有关键知识点,覆盖了Java学习的基础至进阶内容。 首先,Java的基础部分是学习的重点。笔记可能涵盖了Java语言的环境搭建,包括JDK的下载与安装...

    跟我学java26日通随堂笔记(1-6)

    笔记内容涵盖从第一天到第九天的学习要点,尽管视频部分未能包含在此压缩包中,但文字笔记提供了丰富的学习材料。 在Java的学习过程中,首先会接触到的是基础语法。Java是一种面向对象的编程语言,因此理解类、对象...

    Java学习-第七天.docx

    - **调用成员方法**:同样使用`.`操作符来调用对象的方法,如`p.call()`和`p.sendMessage()`。 4. **示例代码分析** - `PhoneDemo`类展示了如何创建`Phone`对象并使用它的属性和方法。`main`方法是程序的入口点,...

    Python语言学习笔记

    类是面向对象编程的核心概念之一,在文档中作者也对此进行了详细的阐述,包括名字空间、字段、属性、方法、继承、开放类以及操作符重载。异常处理是编写健壮程序不可或缺的部分,文档提供了异常处理机制、断言、上...

    mldn核心语法笔记

    这份笔记主要聚焦于Java面向对象的编程思想,通过两个文档——“面向对象(基础)”和“面向对象(基础 第2天)”,系统地介绍了这一关键主题。 1. 面向对象编程基础 面向对象编程(Object-Oriented Programming, ...

    java核心笔记 这是很基础的笔记 我自己整理的

    在第一天,你会了解到Java的历史、特点以及为什么它如此受欢迎。你将学习如何在不同的操作系统(如Windows、Mac或Linux)上安装Java Development Kit (JDK)并配置环境变量,确保Java编译器和运行时环境能够正确工作...

    18天java学习之经典笔记

    "18天Java学习之经典笔记"是一份专为快速掌握Java基础知识而设计的学习资料,适用于那些希望在短时间内复习、备考或者准备面试的人员。这份笔记涵盖了Java的核心概念,通过18天的学习计划,帮助读者逐步理解并熟练...

    21天学java培训笔记和代码

    2. **环境配置**:学习Java的第一步是安装Java Development Kit (JDK),并配置好环境变量,包括JAVA_HOME、PATH和CLASSPATH。 3. **语法基础**:Java的基础语法包括数据类型(如整型、浮点型、字符型和布尔型)、...

    MyBatis第一天课堂笔记.docx

    MyBatis 是一个基于 Java 的持久层框架,它致力于简化 SQL 查询的处理,提供了灵活的 SQL 和 XML 或注解的映射方式,使得开发者能够专注于 SQL 本身,而无需关注 JDBC 的繁琐操作。MyBatis 从前身为 Apache 的 ...

    尚商城笔记一(SOA).docx

    文档首先列出了第一天的学习计划与相关知识点,具体包括统一开发环境的搭建、RESTful Web Service 的概念及其应用、电商系统的整体架构介绍、使用聚合工程搭建电商平台的后台管理系统、版本控制工具 SVN 的使用等...

    Oracle笔记

    ### 第一天:安装与运行 在安装Oracle时,可能会遇到一些问题,如配置环境变量、磁盘空间不足或依赖库缺失等。确保你的系统满足Oracle的硬件和软件要求,并按照官方文档或教程的步骤进行安装。安装完成后,启动...

    java培训笔记(java基础知识第一到七天)

    Java是一种广泛使用的面向对象的编程语言,其基础知识是学习Java开发的基石。以下是基于提供的信息,对Java基础知识的详细说明: **循环中的退出关键字** 1. **break**:当在循环(如for,while或do-while)中遇到...

    30天学会ARM9学习笔记

    从给定的文件信息来看,这是一份关于学习ARM9技术的笔记,涵盖了从系统编程基础到具体操作的详尽内容。以下是从标题、描述、标签和部分内容中提炼的关键知识点: ### ARM9学习笔记概览 #### 标题与描述:“30天...

Global site tag (gtag.js) - Google Analytics