Java篇第三回——运算符、表达式与语句(C不好的也快来)

//声明:本文的所有标准化图片都来自于耿祥义、张跃平老师的《Java2实用教程(第5版)》

if ( 来看C的 && 只是为了考试 )  
		留意一下算术运算符里的自增自减然后直接跳到语句部分;

我们这次要探讨的话题是运算符、表达式和语句。为什么要写这里的内容呢。首先,因为书里有;其次,这部分内容是大部分编程语言都会用到的内容,学会这部分的内容与术语会让我们显得更专业一些[手动狗头];最后,我愿意。

一、运算符、表达式

两个内容合在一起说吧,我总结这部分内容为

算七精、关六七、逻三布、赋右左、位四四

1、算七精

算七精指的是“算术运算符有七个基本字符,要注意计算过程中的精度问题”。
七个基本字符:加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(- -)。前五个是双目运算符,后两个是单目运算符(目的个数就是操作元的个数)。
算术表达式:由算术运算符和括号组成的表达式,也就是我们在数学上写过的那些普通算式。
精度问题:在计算机计算算术表达式的过程中,如果算式中最高精度是double、long、float,则计算结果会对应地转换为double、long、float;如果是其它精度(即精度不大于int),运算结果转换为int类型。至于精度的大小排列,我们在第二回已经提过,,此处不再赘述。

2、关六七

关六七指的是“关系运算符有六个基本字符,且六个基本字符的优先级处于六与七两级”。
六个基本字符:>=、<=、>、<、==、!=,意义就不说了吧,都认识。这三个都是二目运算符。
关系表达式:由“变量或数字”与“关系运算符”组成的表达式,结果是boolean类型。样式如下:

//由变量、数字、运算符组成
x>20;
//由数字、运算符组成
10>20;
//由变量、运算符组成
x>y;
//注意:有时也会遇到直接有一个变量作为关系表达式,定义虽不同,含义却相同
if(linklist){
	...
}//判定条件是链表linklist存在,此处用法请参考数据结构相关内容

3、逻三布

逻三布指的是“逻辑运算符有三个基本字符,结果是boolean类型(布尔类型)”
三个基本字符:&&(且)、||(或)、!(非),前两个是双目运算符,第三个是单目运算符
逻辑表达式:由关系表达式与逻辑运算符组成的表达式。如

if(x>20 && y<10){
	printf("学霸题,数正方体,头顶标注法\n");
}    //如果x>20且y<10时,输出"学霸题,数正方体,头顶标注法"

4、赋右左

赋右左指的是“赋值运算符计算方向是从右往左”。
赋值运算符:=,把后面的值(说的具体点是引用,不明白请忽略)赋给前面。
这个是最简单的运算符,只是因为参考书上有,所以顺带提一嘴,虽然很简单,但是还是有一点特别重要,就是与自增自减算术运算符联系在一起使用的情况。具体如下:

i=10;  j=20;
//自增运算符
a=++i;
b=j++;
i=10; j=20;
i=i+1;
a=i;			//a值为11,即自增运算符在前面的,要“先增再用”

b=j;
j=j+1;			//b的值为20,即自增运算符在后面的,要“先用再增”
/*  上面两块代码是等价的,当然也经
常会看到单纯的自增自减运算,这样
的运算就不会有赋值运算符的参与,
比如“i++”。  */

5、位四四

位四四指的是“位运算符有四个基本字符,占四个不同优先级别”。
四个基本字符:&(与)、|(或)、~(非)、^(异或)
位运算中的操作元是二进制数,对相应位置上的1或0做运算。
与运算是指两个数都为1,结果数对应位置上为1,其余情况都是0;
在这里插入图片描述

或运算是指只要有一个数位上的数为1,则结果数对应位置为1,其余为0;
非运算是符是单目运算符,优先级也较高,是对所有数位上的数取反得到结果数;
异或运算是指两个数位中有且仅有一个为1,则结果数的对应位置上的数为1,其余为0。

6、instanceof运算符

用法:左边的操作元是一个对象实例(如果你真是看的我的博客学java那这里对象不懂你就先留着),右边是一个类名,结果是boolean类型,如果结果为true,就表示这个对象是由这个类或者这个类的子类创建出来的实例。
这个运算符其实从一开始知道以后好几年过去了一次都没用过,说实话,个人感觉意义不是太大(大项目也许有点用,但是大项目谁用SE呢)。不如跟我学个词组

for instance    举个栗子

instance就是“例子、实例”的意思,OVER.

7、小结

具体内容不说了,甩一张图吧。该不该记一下呢,emmmm其实大家都说不用,但是一旦学到数论、离散什么的又有那么点用,所以挑点自己觉得重要的记一下也没坏处。
在这里插入图片描述

二、语句

1、类型:方表复空控p

我好像真的很喜欢这样记东西。。。

这里只说一个后面不会讲到的语句,就是最后一个“p”。其它的语句(方法调用语句、表达式语句、复合语句、空语句、控制语句)看后面的代码注释:

package和import语句:

package xingxingk;		//这是一个名叫xingxingk的包,包是什么后面再说,记得它的翻译就行,并且在代码编写中package必须在import语句之前
import java.util.*;		//这句语句引入了java的实用类,有很多的方法与类供我们使用

2、为啥会学不会的分支语句和循环语句

1)if条件语句(单条件单分支)

if语句:
在这里插入图片描述

if(我爱你){				//if语句,加上后面要讲的开关语句、循环语句,三者并称为控制语句
	我会给你买一束花;		
}		//表示“如果我爱你,那么我会给你买一束花”

if-else语句(单条件双分支):
在这里插入图片描述

if(我是狗){				//花括号{}括起来的包括花括号在内的语句一并被叫做复合语句,这里if和else各引领一个复合语句
	我吃屎;
}else {
	我不吃屎;
}						
//这是一个非常简单的if-else语句的用法。表示“如果我是狗那么我吃屎,如果我不是狗,那我不吃屎”

if-else if-else语句(多条件多分支):
在这里插入图片描述

x=3;		//简单的赋值语句,上面说了运算符与表达式,这就是一条表达式语句 。
if(x>2){
	System.out.println("耶!我比二大!");		//输出功能方法被调用,这种就叫方法调用语句
}else if( x<=2 && x>=-2){
												//这里什么都不执行,叫做空语句
}else{
	System.out.println("呜呜呜,我比负二还小");					
}

2)开关语句

明白了if条件语句的基本逻辑之后,开关语句就不算个事了,首先要清楚单词的意思,switch就是“开关”,选择哪一种情况进行开关就是case(情况)。另外记住几个要点就行。

switch(张三的年龄){
	
	case 23:			//开关语句的第一个要点,冒号在值之后
	
		System.out.println("张三今年23岁,233333333333");
	
		break;			//开关语句的第二个要点,一般每一个case都要写上break语句
	
	case 85:
	
		System.out.println("张三今年85岁,呜呜呜呜呜呜呜");		
	
		break;
	
	default:				//开关语句的第三个要点,当变量与前面的case值都不相等时才执行这部分代码,default为空或者直接表示什么都不做
	
		System.out.println("张三的年龄不是23.也不是85");		

}

上面的三个要点必须牢牢记住,另外还有两个要注意的地方。

  • 如果有一个case对应成功并且case后面没有break语句,程序会一直顺序进行直到碰到下一个break语句为止,见下面例子
switch(x){
	case 1:
		System.out.println("我是一");
	case 0:
		System.out.prinrtln("我是零");
		break;
}		//如果case值为1,将会输出“我是一”和“我是零”
switch(x){
	case 1:
		System.out.println("我是一");
		break;
	case 0:
		System.out.prinrtln("我是零");
		break;
}		//如果case值为1,将会输出“我是一”
  • case的值可以是byte、short、char、int类型,不能为long型

3)循环语句

  • for循环
    语法:
//一般形式
for(给初值;循环条件;每次循环结束都会执行的语句){
	循环的操作;
}

//数组可以有的特殊形式
for(数组类型 变量: 数组名){
	对数组中每个元素执行的操作;
}

实例–遍历数组a:

//一般形式
for(int i=1;i<=a.length;i++){
	System.out.println(a[i-1]);
}

//数组可以有的特殊形式
for(int i: a){		
	System.out.println(a[i]);
}
  • do-while循环
    语法:
do{
	循环的操作;
}while(循环条件)			//先做(do)循环操作,再判定循环条件,满足循环条件就继续做(do)

实例–遍历数组a:

int i=0;
do{
	System.out.println(a[i]);
	i++;
}while(i<=a.length)			//注意循环条件
  • while循环
while(循环条件){
	循环的操作;
}			//先判定是否判定循环条件,满足循环条件就执行复合语句内容

实例–遍历数组a:

int i=0;
while(i<a.length){
	System.out.println(a[i]);
	i++;
}				//注意循环条件与do-while的区别

3、小结

语句这块一定要多自己动手敲代码,特别是对于连续分数的相加或斐波那契数列的计算等循环语句的训练一定要落实到位,另外尤其要对do-while与while语句汇总循环条件的差异有清晰的了解。

三、总结

这次写了很长,但其实能应用到实践中的恐怕不多,大多是一些理论性的东西,而编程又是一个充满实践性的过程。不过,只有理论联系实践,理论才会发挥出真正的价值,实践才会更有底气。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值