【java程序设计期末复习】chapter3 运算符、表达式和语句

本文主要是介绍【java程序设计期末复习】chapter3 运算符、表达式和语句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运算符、表达式和语句

Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。
Java语言中的绝大多数运算符和C语言相同,基本语句,如条件分支语句、循环语句等也和C语言类似,因此,本章就主要知识点给予简单的介绍 。

运算符和运算表达式

加减运算符: +,-
加减运算符是二目运算符;加减运算符的结合方向是从左到右;加减运算符的操作元是整型或浮点型数据,加减运算符的优先级是4级。
乘、除和求余运算符: * / %
以上运算符是二目运算符,结合方向是从左到右,乘、除和求余运算符的操作元是整型或浮点型数据。运算符的优先级是3级。
关系运算符: > , < , >= , <= , == , !=
特点:关系运算符是二目运算符,用来比较两个值的关系,见表4.1。
关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false。
运算规则:
(1)在关系运算符中,当操作数是基本数据类型时,比较的是数据内容;
(2)在关系运算符中,当操作数是引用类型时,比较的是引用对象的引用值,
(3)判断是否是同一对象,而没有比较对象的内容
逻辑运算符 && || !
其中:&&、|| 为二目运算符,实现逻辑与、逻辑或;
!为单目运算符,实现逻辑非。
规则:
逻辑运算符的操作元必须是boolean型数据,逻辑运算符可以用来连接关系表达式,见表4.2。

&&,||也称短路运算符
当前面的表达式op1的值为false时,&&运算符在运算时就不再去计算op2表达式的值;
当op1为true时,||运算符就不再计算op2的值。
(op1&&op2;op1||op2)。
public static void main(String args[])   {    int x=10,y=10;if( ((x=0)==0) || ((y=20)==20) )    {  System.out.println("现在x的值是:"+x);System.out.println("现在y的值是:"+y);}}} 
//x的值是0,但y值依旧是10

位运算符
位运算符:是指对两个整型数据按照对应的位进行运算,结果为新的整型数据。
“按位与”运算,“&”是双目运算符。
运算法则是:如果a,b两个数据对应位都是1,则c的该位是1,否则是0。
“按位或”运算“|”是双目运算符
运算法则是:如果a,b两个数据对应位都是0,则c的该位是0,否则是1。
“按位非”运算“~”是单目运算符。
运算法则是:如果a对应位都是0,则c的该位是1,否则是1。
“按位异或”运算“^”是双目运算符。
运算法则是:如果a,b两个数据对应位相同,则c的该位是0,否则是1。

class Example3_1 
{  public static void main(String args[]){ char a1='十',a2='点',a3='进',a4='攻';char secret='8';a1=(char)(a1^secret);   a2=(char)(a2^secret);a3=(char)(a3^secret);   a4=(char)(a4^secret);System.out.println("密文:"+a1+a2+a3+a4);a1=(char)(a1^secret);   a2=(char)(a2^secret);a3=(char)(a3^secret);  a4=(char)(a4^secret);System.out.println("原文:"+a1+a2+a3+a4);}
}
/*
密文:卹炁迣攃
原文:十点进攻
*/

算术表达式
用算术符号和括号连接起来的符合java语法规则的式子,称为算术表达式。
如:

x+2*y-30+3*(y+5) 

自增,自减运算符
单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。作用是使变量的值增1或减1,
如:
++x(–x)表示在使用x之前,先使x的值增(减)1。
x++(x–)表示在使用x之后,使x的值增(减)1。

int f=2;
int m=2; 
int x=(f*m++)+m; //x=7;
int y=(f*++m)+m; //y=9;

算术混合运算的精度问题

java中数据类型的精度从“低”到“高”排列的顺序是:

byte  short  char  int  long  float  double  

Java在计算算术表达式的值时,使用下列计算精度规则:
(1)如果表达式中有双精度浮点数(double型数据),则按双精度进行运算.
(2)如果表达式中最高精度是单精度浮点数(float型数据),则按单精度进行运算.
(3)如果表达式中最高精度是long型整数,则按long精度进行运算.
(4)如果表达式中最高精度低于int型整数,则按int精度进行运算.
(5)char型数据和整型数据运算结果的精度是int。

最低的计算精度是int
例如:5/2的结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。
例如:byte x=7; 则执行表达式 ‘B’+x; 的结果是int型。
import java.util.*;
public class Example3_9 {public static void main (String args[ ]){Scanner reader=new Scanner(System.in);double sum=0;int m=0;while(reader.hasNextDouble()){double x=reader.nextDouble();m=m+1;sum=sum+x;}System.out.printf("%d个数的和为%f\n",m,sum);System.out.printf("%d个数的平均值是%f\n",m,sum/m); }
}

这篇关于【java程序设计期末复习】chapter3 运算符、表达式和语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005520

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听