【JAVA零基础入门系列】Day5 Java中的运算符

  运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子:

  已知长方形的长为3cm,高为4cm,求长方形的面积。

  好,我们先新建一个项目,命名为Rectangle。

image

  然后右键src文件夹,新建一个package,命名为pers.frank.rectangle。

image

  这里补充说明一下包的命名规则,相信很多人都知道,包命名的时候用去www域名反写,加上项目名称,但实际上,那一般是用于公司项目的命名方式,对于不同项目,有着不同的命名规则。

  indi :个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。

包名为“indi.发起者名.项目名.模块名.……”。

  pers :个人项目,指个人发起,独自完成,可分享的项目,copyright主要属于个人。包名为“pers.个人名.项目名.模块名.……”。

  priv :私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。包名为“priv.个人名.项目名.模块名.……”。

  onem :与“indi”相同,推荐使用“indi”。

  team :团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有。

包名为“team.团队名.项目名.模块名.……”。

  com :公司项目,copyright由项目发起的公司所有。

包名为“com.公司名.项目名.模块名.……”。

  package主要用于将完成不同功能的类分门别类,放在不同的目录(包)下,方便类的管理。我们这个项目中只需要用到一个类,所以不需要用到四级包名。前面教程说的有点快,包名设置成了HelloWorld,是不符合规则的,这里说明一下。(这是一个错误的演示,秘制尴尬。。。)

  然后在package中新建一个class,右键选择即可,命名为Recrangle。

image

代码如下:

package pers.frank.rectangle;

public class Rectangle {
    public static void main(String[] args){
        int length = 3;
        int width = 4;
        int area = (length + width) * 2;
        System.out.println("Area:"+area);
    }
}

  因为长宽都是整数,所以用int类型即可。接下来,我们运行一下。

image

  这样就得到了我们想要的结果。

  这时候也许你就要问了,这个结果口算都能算的出来,为什么还要大费周章去写代码呢?我说了只是举一个最简单的栗子嘛,要是算长宽分别为1.234567和2.345678,你还能口算吗?你也许会说,按下计算器就好了。那如果是求十个矩形中面积最大的一个呢?如果是求斐波拉契数列的第1234项呢?你还能用计算机按出来吗?由此可见,问题越是复杂,越能体现出编程的优越性。当你还在苦逼的按着计算器的时候,我已经得出来结果,在召唤师峡谷遨游了。

  也许你对于这段代码还有一些不理解的地方。别急,容我一句一句来解读。

  第一行,package pers.frank.rectangle; 这里是说明一下当前这个类是属于这个包的,如果不写,也可以运行,但是这样的话,类就会被划分到默认的包中。而且带包名和不带包名时的编译方式是不一样的。具体的可以查看 http://blog.csdn.net/com_stu_zhang/article/details/25112591

  第二行,public class Rectangle,这是在声明一个类,public表示该类的访问权限为公开访问,class关键词表示这是一个类,Rectangle则是类名。后面花括号里的内容则是类的定义。

  第三行,public static void main(String[] args),这是主入口函数的声明。每一个程序都要有一个入口函数,即第一个被执行的函数,编译器会先找到并加载包含入口函数的类,然后再加载其他相关的类,由于是第一个被执行的函数,在此之前没有类的实例化对象,所以需要用static修饰,小括号里为参数列表,String[]表示参数为一个字符串数组,args即为参数名,这里暂时不做详细介绍,现在不理解没关系,只需要知道入口函数长这样就行了。

  第四五行即定义两个int型变量,length和width,并分别初始化。

  第六行定义了一个int型变量area,并把表达式 (length + width) * 2 的值赋值给了它。

  第七行即输出语句,输出的具体用法之后再详细介绍,这里只需要知道它可以这么用就好了。

  这样,对我们的代码是不是又多了几分了解。

  那除了这几个最基本的符号,还有哪些运算符呢?

1、自增、自减运算符。

  在Java中,也像C++一样,有着自增自减运算符,效果就是让变量增加1,或者减少1,。直接看代码:

package pers.frank.test;
import java.lang.System;

public class Test {
    public static void main(String[] args){
        int n = 10;
        n++;
        System.out.println(n);
        n--;
        n--;
        System.out.println(n);
    }
}

  你会得到11跟9两个数字,这分别是n自增一次,然后自减两次的结果。怎么样,是不是很简单?别高兴的太早,来看看这段代码,你知道结果是多少吗?

package pers.frank.test;
import java.lang.System;

public class Test {
    public static void main(String[] args){
        int n = 10;
        int m = 10 * n++;
        int i = m++ * --n;
        int j = ++i + ++m  - n--;
        System.out.printf("n:%d, m:%d, i:%d, j:%d",n,m,i,j);
    }
}

  你看完之后也许心中会有万头草泥马在奔腾。别着急,其实也不难。自增符跟自减符放在变量前与变量后是不同的。有什么不同呢?如果放在变量之前,表示先自增/自减,然后再用这个值参与运算,如果是放在变量之后,则表示先计算表达式的值,之后再将变量自增/自减。

  所以,m=10*n++;这一句运行时,n的值时10,先计算表达式后,m=100,之后n自增1,n=11;

  至于后面几个运算,因为跟优先级有关,所以这里暂时不介绍,等后面说完优先级再做解释。

2.关系运算符和逻辑运算符

  关系运算符包括:==、!=、>、<,分别是等于,不等于,大于和小于。这个我想不用过多介绍了吧,主要用于逻辑判断,在后面的控制流程中会更有详细的栗子。对于新人而言,需要注意的就是不要把赋值符=跟关系运算符==弄混淆了。逻辑运算符有,&&、||、! 分别叫做 与、或、非。或跟与都是双目运算符,也就是连接两个表达式,exp1 && exp2,只有当两个表达式的值都为真时,总表达式的值才为真,否则为假。比如:1>0 && 2<3 由于两个子表达式的结果都为真,所以总表达式的值也是真。而:10>9 && 9<8; 这里由于9<8不成立,即为假,所以总表达式的值为假。而对于或运算符,只需要两个表达式中,任意一个表达式成立,总表达式的值即为真。例如:10>11 || 1<2;由于后一个表达式为真,所以总表达式为真。对于否运算符,这是一个单目运算符,会将表达式的结果反转,真变成假,假变成真。

  这里有一个表,大家一看应该就明白了。

image

  如果实在没明白,那也没关系,后面的判断流程里会有代码帮助大家理解。

3.运算符级别

  运算符是有优先级的,就像加减乘除也有着先乘除,后加减的先后顺序一样。这里有一张表,列举了这些运算符的优先级,优先级数值越小,表示越优先运算。

image

  可能现在对于这个还没有多大概念,没关系,后面我们通过代码就能更好的体会了。

  现在对之前那个WTF的表达式再做一个讲解。

  i=m++ * --n;表达式从左到右运算,根据优先级,先计算自减运算,n的值变成了10,再计算乘法,得出i的值为100*10=1000再赋值给i;m再自增,值为101;

  j = ++i + ++m - n--;同理,i自增得到1001,m自增得到102,计算:1001+102-10=1093;n再自减得到9;

  这样,对于这个优先级也多了些了解吧,

 4、枚举类型

  最后顺便说说这个枚举类型吧,枚举类型用enum关键字进行定义,有时候变量的取值在一个有限的集合里,一般是我们自定义的一个集合,比如几个颜色的集合,当我们定义了一个枚举类型的时候,我们声明它里面有几个元素,在我们使用这个枚举的时候,我们只能够使用它有的元素,没有的元素我们是无法使用,系统就会报错。

  比如:enum Color = {RED, GREEN, YELLOW}; Color myColor = Color.RED;

  使用枚举有以下好处:

  • 可减少由数字转置或键入错误引起的错误。

  • 以后更改值很容易。

  • 使代码更易读,这意味着代码中发生错误的概率降低。

  • 确保向前兼容性。使用枚举可减少将来有人更改与成员名称对应的值时代码出错的概率。

  其实要真细说的话,枚举也不简单,可以在枚举中自定义函数,可以实现接口,这些等以后在代码中遇到再做详细介绍。

  至此,本次教程结束。欢迎大家继续关注下一篇教程。如果有发现任何错误,请及时联系我,我会及时更正修改,也希望大家多提提建议,多来交流。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,151评论 0 13
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,206评论 1 44
  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,本章逐一介绍这些运算...
    许先生__阅读 607评论 0 3
  • 姬存希早间护肤步骤 1.洗面奶(洁面) 2.水(打开毛孔 补水) 3.眼霜(修复眼部) 4.精华液(修复受损肌肤)...
    瑞瑞28阅读 309评论 0 0
  • 既然准他上车, 就该让他补票。 “还有谁没到?”看几桌客人坐得差不多了,老刘回头问太太。突然脑际闪过一片影片:“糟...
    视觉笔记找文莹阅读 829评论 0 0