当前位置:文档之家› Java标识符重命名混淆算法及其实现

Java标识符重命名混淆算法及其实现

Java标识符重命名混淆算法及其实现
Java标识符重命名混淆算法及其实现

C语言的标识符和关键字

1、标识符 标识符使用来标识源程序中的某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。 C语言规定:一个标识符由字母、数字和下划线组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,所以在编写C语言程序时,最好不要使用以下划线开头的标识符。但是下划线可以用在第一个字符以后的任何位置。 标识符的长度不要超过32个字符,尽管C语言规定标识符的长度最大可达255个字符,但是在实际编译时,只有前面32个字符能够被正确识别。对于一般的应用程序来说,32个字符的标示符长度足够用了。 C语言对大小写字符敏感,所以在编写程序时要注意大小写字符的区分。例如:对于sec和SEC这两个标识符来说,C语言会认为这是两个完全不同的标识符。 C语言程序中的标识符命名应做到简洁明了、含义清晰。这样便于程序的阅读和维护。例如在比较最大值时,最好使用max来定义该标识符。 2、关键字 在c语言编程中,为了定义变量、表达语句功能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字。 关键字已被编译系统本身使用,所以用户编写程序时不能够使用这些关键字来作为标识符。C语言中关键字主要有以下三类: ?类型说明符:用来定义变量、函数或其他数据结构的类型,如unsigned char,int,long等 ?语句定义符:用来标示一个语句的功能,如if,for等 ?预处理命令字:用来表示预处理命令的关键字,如include,define等

标准C语言有32个关键字,c51编译器又扩充了一些关键字,这些关键字在编程时需要注意,绝对不能使用这些关键字来定义标识符。

标识符的含义

标识符的含义 标识符也称为名字,可以指代多种实体:函数、结构标记、联合标记和枚举标记;结构 成员或联合成员;枚举常量;类型定义名;标号以及对象等。对象有时也称为变量,它是一个存储位置。对它的解释依赖于两个主要属性:存储类和类型。存储类决定了与该标识对象相关联的存储区域的生存期,类型决定了标识对象中值的含义。名字还具有一个作用域和一个连接。作用域即程序中可以访问此名字的区域,连接决定另一作用域中的同一个名字是否指向同一个对象或函数。作用域和连接将在A.11 节中讨论。 A.4.1 存储类 存储类分为两类:自动存储类(automatic)和静态存储类(static)。声明对象时使用的一些关键字和声明的上下文共同决定了对象的存储类。自动存储类对象对于一个程序块(参见A.9.3 节)来说是局部的,在退出程序块时该对象将消失。如果没有使用存储类说明符,或者 如果使用了auto限定符,则程序块中的声明生成的都是自动存储类对象。声明为register 的对象也是自动存储类对象,并且将被存储在机器的快速寄存器中(如果可能的话)。 静态对象可以是某个程序块的局部对象,也可以是所有程序块的外部对象。无论是哪一 种情况,在退出和再进入函数或程序块时其值将保持不变。在一个程序块(包括提供函数代码的程序块)内,静态对象用关键字static 声明。在所有程序块外部声明且与函数定义在 同一级的对象总是静态的。可以通过static 关键字将对象声明为某个特定翻译单元的局部 对象,这种类型的对象将具有内部连接。当省略显式的存储类或通过关键字extern 进行声 明时,对象对整个程序来说是全局可访问的,并且具有外部连接。 A.4.2 基本类型 基本类型包括多种。附录B 中描述的标准头文件中定义了本地实现中每种 类型的最大值和最小值。附录B给出的数值表示最小的可接受限度。 声明为字符(char)的对象要大到足以存储执行字符集中的任何字符。如果字符集中的 某个字符存储在一个char类型的对象中,则该对象的值等于字符的整型编码值,并且是非负 值。其它类型的对象也可以存储在char类型的变量中,但其取值范围,特别是其值是否带符 号,同具体的实现有关。 以unsigned char 声明的无符号字符与普通字符占用同样大小的空间,但其值总是非 负的。以signed char显式声明的带符号字符与普通字符也占用同样大小的空间。 说明:本书的第1 版中没有unsigned char 类型,但这种用法很常见。signed char 是新 增加的。 除char 类型外,还有3 种不同大小的整型类型:short int、int 和long int。普 通int 对象的长度与由宿主机器的体系结构决定的自然长度相同。其它类型的整型可以满足 各种特殊的用途。较长的整数至少要占有与较短整数一样的存储空间;但是具体的实现可以使得一般整型(int)与短整型(short int)或长整型(long int)具有同样的大小。

JAVA运算符和条件结构

运算符和条件结构 3.1 训练的技能点 (1)学会使用关系运算符和逻辑运算符 (2)学会获取键盘输入的数据 (3)学会使用if-else和多重if条件结构 (4)学会使用switch结构 3.2 上机任务 【阶段一】指导:从键盘获取信息并判断是否合法 训练要点 (1)键盘输入 (2)条件运算符 (3)逻辑运算符 需求说明 (1)录入会员信息(会员号、会员生日、会员积分),并打印输出录入的信息; (2)功能1:判断录入的会员号是否合法(必须为4位整数),如果录入合法,显示录入的信息,如果不合法,则显示“录入信息失败”; 实现思路及关键代码 (1)创建文件,命名为AddCust.java。 (2)实现功能1: 使用Scanner获取用户的键盘输入,存储在变量custNo、custBirth、custScore中。Scanner input = new Scanner( System.in ); System.out.println( “请输入会员号<4位整数>:” ); //提示输入4位会员号 int custNo = input.nextInt( ); //从键盘输入会员号,存在变量custNo中 注意 在使用Scanner前,要在AddCust.java文件开头添加如下代码: import java.util.*; (3)在功能1的基础上实现功能2:判断会员号是否合法。 if ( 会员号有效的条件) {

//输出录入的会员信息 } else { //输出信息录入失败 } 参考解决方案 实现功能1: import java.util.*; public class AddCust { public static void main( String[ ] args ) { /* 以下部分是信息输入*/ System.out.println("录入客户信息\n"); //录入客户信息Scanner input = new Scanner( System.in ); System.out.println("请输入会员号(4位数字):"); int custNo = input.nextInt( ); System.out.println("请输入会员生日(月/日<用两位数字表示>):"); String custBirth = input.next(); System.out.print("请输入积分:"); int custScore = input.nextInt(); /* 以下部分是信息输出*/ System.out.println("\n已录入的会员信息是:"); //显示录入的信息System.out.println(custNo+"\t"+custBirth+"\t"+custScore); } } 实现功能2: import java.util.*; public class AddCust { public static void main( String[ ] args ) { /* 以下部分是信息输入*/ System.out.println("录入客户信息\n"); //录入客户信息Scanner input = new Scanner( System.in ); System.out.println("请输入会员号(4位数字):"); int custNo = input.nextInt( ); System.out.println("请输入会员生日(月/日<用两位数字表示>):");

java运算符与表达式

一、运算符 1、算术运算符 = - * / %: 例子1:怎样判断两个数是否整除? public class Helloword { public static void main(String[] args) { int number1=11; int number2=5; if(number1%number2==0){ System.out.println(number1+"与"+number2+"整除!"); }else{ System.out.println(number1+"与"+number2+"不整除!"); } } } 比如:78 7 和8 public class Helloword { public static void main(String[] args) { int number=78; int a=number/10; int b=number%10; System.out.println("a="+a); System.out.println("b="+b); } } 推广:如果是三位数,四位数?…. ++ 例子3:int a=5; Int b=a++; A=? b=? public class Helloword { public static void main(String[] args) { int a = 5; int b = a++;//先赋值b=a,后自增a=a+1 int b2=++a;//先自增a=a+1,再赋值b=a System.out.println("a=" + a);//a=6

System.out.println("b=" + b);//b=5 System.out.println("b2=" + b2);//b=6 } } -- 2、关系运算符 < <= > >= = = != 关系运算的结果:True false 3、逻辑运算符 !: &&: ||: ~: public class Helloword { public static void main(String[] args) { if( (10>5) && (10/0==0?true:false) ){ System.out.println("ture"); }else{ System.out.println("false"); } } } 报错!因为:执行(10/0==0?true:false)。 public class Helloword { public static void main(String[] args) { if( (10<5) && (10/0==0?true:false) ){ System.out.println("ture"); }else{ System.out.println("false"); } } } 不报错,因为:没有执行:执行(10/0==0?true:false)。 比较两种情况: && :短路与,只要第一个条件是false,第二个条件不判断& : 与不管第一个条件是什么,第二个条件一样判断

C语言常见命名规则

C语言常见命名规则 一、概述 比较著名的命名规则首推匈牙利命名法,这种命名方法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi)提出的。其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。 [例如]lpszStr,表示指向一个以'\0'结尾的字符串(sz)的长指针(lp)变量。 骆驼(Camel)命名法近年来越来越流行,在许多新的函数库和Java这样的平台下使用得当相多。骆驼命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。 [例如]printEmployeePaychecks(),函数名中每一个逻辑断点都有一个大写字母来标记。 帕斯卡(Pascal)命名法与骆驼命名法类似。只不过骆驼命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。 [例如]DisplayInfo()和UserName都是采用了帕斯卡命名法。 在C#中,以帕斯卡命名法和骆驼命名法居多。 事实上,很多程序设计者在实际命名时会将骆驼命名法和帕斯卡结合使用,例如变量名采用骆驼命名法,而函数采用帕斯卡命名法。 另一种流行的命名规则称为下划线命名法。 下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU 代码中使用非常普遍。 1、常量名用大写,太长时用下划线隔开: 1.#define MAX 2.#define INCREMENT_SIZE 2、变量名采用小驼峰形式书写: 1.int first 2.float newElem 3、函数名、结构名和联合名采用大驼峰形式书写: 1.void ClearList(List*L) 2.{ 3.…. 4.} 5.int PutElem(int elem) 6.{ 7.…. 8.} 9.typedef struct LinkNode 10.{ 11.int data;

《Java范例开发大全》

下面是377个Java的例子。如果你是牛人,看看你能做出多少? 如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》实例1开发第一个Java程序 实例2自动提升 实例3自动转换 实例4常用基础类型之强制转换 实例5算术运算符 实例6关系运算符 实例7逻辑运算符 实例8位运算符 实例9移位运算符 实例10转型运算符 实例11常量与变量 实例12各种进制的转换 实例13 Java中的进制与移位运算符 实例14判断输入的年份是否为闰年 实例15抽奖活动 实例16xx乘法表 实例17如何列出素数 实例18 Java中的递归 实例19男生女生各多少人

实例20求xx数 实例21求任意一个正数的阶乘 实例22求n的n次方 实例23利用for循环输出几何图形 实例24xx 实例25求1到100之间的和 实例26存上100元需要多少天 实例27输出100之间的所有偶数 实例28如何判断回文数字 实例29输出100之间的所有奇数 实例30求最大的随机数 实例31判断字母分类 实例32优良及差 实例33打印任意一年日历 实例34一年四季的划分 实例35除0发生的算术异常(ArithmeticException) 实例36数组下标越界异常(ArrayIndexOutOfBoundsException)实例37数组元素类型不匹配异常(ArrayStoreException) 实例38强制类型转换异常(ClassCastException) 实例39索引越界异常(IndexOutOfBoundsException) 实例40空指针异常(NullPointerException)

java移位运算符详解

java移位运算符不外乎就这三种:<<(左移)、>>(带符 号右移)和>>>(无符号右移) 1、左移运算符 左移运算符<<使指定值的所有位都左移规定的次数。 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数。 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int 型移动33位,实际上只移动了33%32=1位。 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃; 当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。 当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。 3)数学意义 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方 4)计算过程: 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100, 转换为十进制是12。 移动的位数超过了该类型的最大位数, 如果移进高阶位(31或63位),那么该值将变为负值。下面的程序说明了这一点: Java代码 // Left shifting as a quick way to multiply by 2. public class MultByTwo { public static void main(String args[]) { int i; int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1;

标识符

标识符(考试重点) 在C语言中用于标识名字的有效字符序列称为标识符。标识符可以用作常量名、变量名、符号名、函数名和后面要学到的指针名、数组名等。C语言中标识符的命名规则如下: 1)标识符只能由字母、数字和下划线组成; 2)标识符的第一个字符必须是字母或下划线。 3)标识符区分大小写字母。如int与Int是两个完全不同的标识符。 合法的标识符: a x sum spels program ab1 _to file_5 a1b2c3 _2 B3 非法的标识符: ab12# (含有不合法的字符“#”) a1-c (含有不合法的字符“-”) ab c (空格不是合法标识符) πr (“π”不是字母,为不合法标识符字符) 23ab (第一个字符不能为数字) C语言的标识符分为如下三类: 1)关键字 关键字是具有特定含义的、专门用来说明C语言特定成分的一类标识符。关键字均由小写字母构成。Int 就不是关键字。 2)预定义标识符 预定义标识符(如printf,scanf,sin,isalum等)和编译预处理命令名(如define,include 等)。注意,预定义标识符可以作为“用户标识符”使用。 3)用户标识符(考试重点) 不能是关键字;只能由字母、数字和下划线组成;第一个字符必须是字母或下划线。 Int可以作为用户标识符,int就不可以作为用户标识符。 考点:1. 识别哪些是(或不是)标识符 2. 识别哪些是(或不是)用户标识符 例2:以下不能定义为用户标识符的是 A)scanf B)V oid C)_3com_ D)int 分析:本题答案选D。因为int是关键字,关键字不能作为用户标识符。答案(A)的scanf虽然是预定义标识符,但是预定义标识符可以作为用户标识符使用。(B)中V oid 的第一个字符V大写,它与关键字void是两个不同的标识符,故它可以作为用户标识符。(C)中的_3com_符合标识符的命名规则,且不是关键字,故可以定义为用户标识符。 例3:以下不合法的用户标识符是 A)j2_KEY B)Double C)4d D)_8_ 分析:本题答案选C。答案(A)是一个用户标识符,符合标识符的命名规则。答案(B)也是用户标识符,需要注意的是,它与关键字double是两个不同的标识符。答案(D)是用户标识符,由数字和下划线组成,且第一个字符为下划线。只有答案(C)是不合法的用户标识符,因为它的第一个字符是数字,不符合标识符的命名规则。 标识符的常见错误: 1. 数字开头

java中常见的几种运算符

Java中常见的几种运算符 第一:算术运算符:{+、-、*、/、%取余或是取模、++与--递增和递减。} 需要注意的几个地方:在进行除法运行时当两个整数相除时结果为整数,若除以一个整数除不尽时,这是就会返回整数部分,小数部分则将省略,这时就要涉及到浮点型数据了!递增和递减应注意的是:++或—写在变量前面,则该式子的值等于变量变化以前的值。2)++或—写在变量后面,则该式子的值等于变量变化以后的值。 第二:关系运算符:{==等于若两个值相等,返回一个真值、!=不等于、<小于、>大于、<=小于等于、>=大于等于}主要用于根据某个变量的值来执行特定的操作,并且返回一个布尔值,一般形式为:做操作数关系运算符右操作数! 第三:位运算符:{“&”代表与运算符两个条件都成立才算成立;“︳”代表或运算符,满足其中一个即可成立,对应的二进制位有一个为1 则为1,否则为0;“?”代表异或运算符,对应的二进制位相同为零,不相同为1}

第四:逻辑运算符:{“&&”代表与逻辑运算符两个条件都成立算成立,“︳︳”代表或逻辑运算符,满足其中一个条件即可,他们的结果都是boolean类型的ture或false} 第五:移位运算符:{“<<”代表向左移多少位;“>>”代表向又移多少位;“>>>”又移补零} 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 语法格式:需要移位的数字<<(>>)移位的次数 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2 的1 次方,左移n 位就相当于乘以2 的n 次方;右移n 位相当于除以2 的n 次方。如:b<<8相当于b*16;b>>8相当于b/16. 第六:三元运算符{语法格式:(布尔表达式)?(真值):(假植)}如果布尔表达式的条件为真那么执行的条件位真值,否则反之。【a=a+5等于a+=5】 第七:运算符的优先级: 1 () [] . 从左到右 2 ! +(正) -(负) ~ ++ -- 从右向左 3 * / % 从左向右 4 +(加) -(减) 从左向右 5 << >> >>> 从左向右

标示符命名规则

C语言标识符命名规则 转自:搜狐网 一)、变量类型和表示方法 1.什么是变量? 一句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、小数(浮点数)、字符等等,那么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他的具体分类。整型变量还可具体分为无符号型、长整型和短整型。浮点型也可分为单精度型、双精度型和长双精度型。此外还可以分为静态变量、外部变量、寄存器变量和自动存储变量。 那么变量我们总要给它取个名字吧,这个名字我们叫做标识符。标识符的命名有一定的规则: (1).标识符只能由字母、数字和下划线三类字符组成 (2).第一个字符必须是字母(第一个字符也可以是下划线,但被视作系统自定义的标识符) (3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符 (4).标识符可以任意长,但只有前32位有效。有些旧的C版本对外部标识符的限制为6位。这是由于链接程序的限制所总成

的,而不是C语言本身的局限性 (5).标识符不能是C的关键字 2.从上面的规则中,有个关键字的概念。那么什么叫关键字呢?从表面字意上也可以看出,关键字是C语言本身某些特性的一个表示,是唯一的代表某一个意思的。 下面列出ANSI标准定义的32个C语言的关键字,这些关键字在以后的学习中基本上都会用到,到时再说它们的各自用法。auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while C语言还包括一些不能用做标识符的扩展关键字。 asm cdecl _cs _ds _es far huge interrupt near pascal _ss 所以在以后的学习中,在给变量命名时要避开这些关键字。3. Turbo C2.0规定所有变量在使用前都必须加以说明。一条变量说明语句由数据类型和其后的一个或多个变量名组成。变量说明的形式如下: 类型<变量表>; 这里类型是指Turbo C2.0的有效数据类型。变量表是一个或多个标识符名,每个标识符之间用,分隔。

JAVA语言中常用的运算符

JAVA中常用的运算符有以下几种 我们日常了解到的运算符有有+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),那么在JAVA中有哪些我们不知晓的运算符呢,下面就介绍下JAVA中的运算符。 一、自增和自减运算符 自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算;放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1)。 二、算术运算符 ava中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),它们都是二元运算符。 三、比较运算符 比较运算符属于二元运算符,用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则结果是false。比较运算符通常用在条件语句中来作为判断的依据。 四、逻辑运算符 逻辑运算符包括&&(&)(逻辑与)、||(|)(逻辑或)和!(逻辑非),返回值为布尔类型的表达式,操作元也必须是boolean型数据。

和比较运算符相比,逻辑运算符可以表示更加复杂的条件,例如连接几个关系表达式进行判断。在逻辑运算符中,除了“!”是一元运算符之外,其余的都是二元运算符。 五、位运算符 位运算符用于处理整型和字符型的操作数,对其内存进行操作,数据在内存中以二进制的形式表示,例如int型变量7的二进制表示是00000000 00000000 00000000 00000111,-8的二进制表示是111111111 111111111 1111111 11111000,最高位是符号位,0表示正数,1表示负数。 六、运算符优先级 七、三元运算符 三元运算符是Java中唯一一个三目运算符,其操作元有三个,第一个是条件表达式,其余的是两个值,条件表达式成立时运算取第一个值,不成立时取第二个值,示例代码如下所示: boolean b = 20 < 45 ? true : false;

Java上机作业2_运算符和表达式分析

第三章运算符和表达式 一、大纲 1.理解表达式以及其相关概念 2.掌握算术赋值等运算符的使用 二、实验目标: 1.掌握表达式,优先级,结合性的概念。 2.掌握算数,赋值,增减量,逗号表达式的使用。 3.理解类型转换的含义和使用方法。 4.掌握输入输出运算符的使用。 5.能使用输入输出运算符结合变量和算术、赋值等运算符实现一个简单的现实功能。 三、实验方式: 要求学生自己独立完成 四、任务 4.1任务1:使用变量参与各种运算(时间:40分钟) 4.1.1.2(20分钟) 要求从键盘上接收三个整数a,b,c,分别求++a + b + c,a++ + b + c++,a + b++ + ++c 和++a + ++b + ++c的和,并将其输出。 a=1 b=2 c=3

4.1.2 任务目的 (1)理解变量在未被初始化的情况下其值随机。 (2)理解增量运算符的运算规则。 (3)理解优先级的概念。 4.1.3 任务要求 (1)先分析程序的执行结果,以及每一步语句执行后程序中各自变量的变化情况。 (2)如果分析有困难,可以先查看执行结果,再分析程序的执行情况。 4.1.4 难点提示 前++和后++的运算规则,以及优先级概念。 4.2任务2:变量与输入输出运算符的结合使用(时间:70分钟) 4.2.1 任务描述 4.2.1.1(15分钟) (1)分别定义三个int变量,从键盘上接收三个整数,然后对它们求和,输出求和结果。 (2)注意需要将求和的结果另外保存到一个变量中,然后再执行输出操作。 4.2.1.2(20分钟) 定义一个int类型的变量a,并从键盘接收一个整数,将其赋予a,定义一个float类型的变量b,并从键盘接收一个浮点数,将其赋予b,再定义一个float类型的变量c,计算a+b 的值,并将其赋予c。 4.2.1.3(15分钟) 编写一个程序,该程序要求输入一个float类型的数字并打印该数的立方值,并将其立方值赋给一个int类型的变量,打印该int类型的值。

java运算符基础入门

1 运算符 1:运算 对常量和变量进行操作的过程称为运算。 2:运算符 对常量和变量进行操作的符号称为运算符 3:操作数 参与运算的数据称为操作数 4:用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。 举例: int a = 3 + 4; 这是做了一个加法运算 +就是运算符,是算术运算符,我们还有其他很多的运算符 3,4就是参与运算的操作数据 3 + 4整体其实就是一个算数表达式

●+,-,*,/都是比较简单的操作,简单演示即可 ●+的几种作用: ?加法 ?正数 ?字符串连接符 ●除法的时候要注意一个问题: ?整数相除,只能得到整数 ?要想得到小数,可以*1.0 ●/和%的区别 ●++和--的应用 ?单独使用效果相同 ?参与运算使用,在操作数的前后效果不同●1:基本小题目 ●int a = 10; ●int b = 10; ●int c = 10; ● a = b++; ● c = --a; ● b = ++a; ● a = c--; ●请分别计算出a,b,c的值 ●2:比较复杂的题目 ●int a = 4; ●int b = (a++)+(++a)+(a*10); ●引出运算符的优先级

2 赋值运算符 ●符号: ?= , +=, -=, *=, /=, %= ?=为基本的赋值运算符,其他的为扩展的赋值运算符 ●如下操作写出结果 ?int a,b; a = b = 10; ?System.out.println(a); System.out.println(b); ?int a = 10; a += 20; System.out.println(a); ●面试题 ?short s=1, s = s+1; short s=1, s+=1; ?上面两个代码有没有问题,如果有,那里有问题 1:= 赋值号 2:+=加赋值 把左边和右边的结果赋值给左边。 注意:左边不能是常量 3:通过面试题引出+=运算符的特点: 有一个隐含的默认转换功能。 实际上等价于: short s = 1; s+=1等价于 s=(s的数据类型)(s+1 关系运算符

java语言基础测试卷

Java语言基础测试 一、选择题(3’*15) 1.执行下列语句: int num= ~(-5); 变量num的值为(D)。 A. -5 B. 5 C. -4 D.4 2.执行下列语句: int a = 0x9af700; a <<= 2; 变量a的值为:(A)。 A. 0x26bdc00 B. 0xc6bdc00 C. 0x3fa0000 D. 0x7e02ffff 3. 下列数组声明语句中,错误的是:(B)。 A. int[] arr = new int[8]; B. int[] arr = new int[8]{}; C. int[] arr = {}; D. int[] arr = new int[]{}; 4.下列代码的输出结果是(B)。 boolean b = true ? false : true == true ? false : true; System.out.println(b); A. true B. false C. null D. 空字符串 5.下列代码的输出结果是(A)。 int j=0; for(int i=0;i<100;i++){ j=j++; } System.out.println(j); A. 0 B. 99 C. 100 D. 101 6. 下列不属于Java运算符的是(B)。 A. != B. <> C. >> D. << 7. 下列属于不合法Java标识符的是(B)。 A. _avaj B. 5save C. Avaj D. $80 8.执行完下面程序片段后,(B )的结论是正确的。 int a, b, c; a = 1; b = 2; c = (a + b > 3 ? a++ : b++); A、a的值是2,b的值是3 B、a的值是1,b的值是3 C、a的值是1,b的值是2 D、c的值是false 9. 语句System.out.println('1'+'2'+""+3+4);输出结果是:( D )

JAVA标识符

来,大家我们接着看啊,这个我们已经说完了,这个java语言的一个基本搭建环境问题啊,那么也给大家演示一下,helloword。接下来呢?我们要说一下这个java语言的一些基本组成啊,就是说java语言当中都有哪些东西是吧?其 实大家你要学完了英文,你就有感触了,英文先学的是音标单词什么意思啊?唉,字母啊,是吧,都一样,然后呢,后面要学句子在后面呢,要写短文是不 是更越来越复杂一些啊?唉,家务也是一样,但是家比英文好在哪呢?它里边 东西都是固定的,你写错了,虚拟机,不识别,听懂了吧唉,这是比较好的地方,那么我们看一下嘉园组成都有哪些东西首先第一个是关键字,第二个是标 识符著是常量变量,运算符语句函数数组。大家注意,你看这些高中老师,这 还用你读一遍吗?跟你们说点通用的东西,我跟你讲,你不学家伙,那你去学 c井号,或者说叫c,12分,或者学c加加,他也有这些东西,能听懂吧唉, 只不过是表现形式不同,能听懂了家,那么你学习的时候注意你把这些东西的 一些使用特点记住的话, 等有一天你不干家务了,你去学c加加,我跟你讲,编程思想一模一样,只不 过表达形式不同而已,你能听懂吗?就跟我们说,见了面以后我们都需要做一 些基本的客套话是吧?比如说,唉,吃了吗?唉,你好是这意思啊,这是基本 的客套话,那么你要是学了英文,以后是不是用英文说呀,明白吧,是一个道理,只不过什么思想没变,表达形式不同而已。明白意思吧?一个是对中文也 说英文啊,那么大家接下来我们说一下这个关键字呢?这个昨天老师给大家说 过了是吧,什么叫关键字来着,就是被家乐福与特殊含义的单词,这个形式, 我想在c加加,里边也有c加加语言也对某些单词赋予了特殊的含义。明白吧,它的关键字和java有些不一样啊,那么接下来注视是不是也说完了?对吧?咱们今天重点说一下注释啊,用哪一种啊,大银行都行,文档对吧?唉,文档注释,文文档就是家伙呢,特有注释,对吧,加维特有注释,而至于说其他人呢,都支持单行和多行ok,一是用于助学说明程序的第二个呢,是用来调试程序的,那么接下来给大家说说这个标识符,那那么往下看老师呢?在这里边,把这个 加号中的关键字吧,都用一个表格行形式列举出来了。哈,那么这个呢,咱不 用被停满了吧这些关键字啊,几乎都会讲到的,那都会讲到,只不过老师稍微 加分类啊,你要愿意的话,可以下载时候有空可以看一看,那不愿干就算了。 那我这总结完以后呢?你可以自己查找,每学一个,可以到来查找一下,这块 有什么用,听到了吧, 唉,嗯,接下来大家说这个标识符的问题,那标识符是什么呢?其实你可以把 它理解为,就是我们在程序当中所定义的一些名称,比如说类名,大家雷鸣是 我自己起的呀是吧?唉,自己起的这些都可以称为标识符,那么接下来大家这 标识服务的定义啊,它就有了一些规则,注意我说的不是规范是规则,规则是 必须要遵守的,什么规则呢?首先,它有哪些东西组成啊?0到9,这10个数字,a到z,这26个字母的大小写都行,还有两个特殊的符号,一个叫做美元 符号,还有一个叫做下划线,听完了吧,下划线,这些是它的组成部分,但是 记住了他们在进行排列起名的时候,数字不能开头,能听懂吧唉,数字不能开头,第二个不允许使用关键字,因为关键字已经被赋予了特殊的含义,你不能 再用了,简单举个例子,你说我们起名字叫戴帽衣,这没问题,听明白了吧, 可是你要是起名字叫一呆毛,这不允许能懂吧?数字不能开头,这是规则啊, 那么说老师我起名字叫什么呀?如果想要cad在课,这个也不允许,

标识符命名规则

【规则 3-1-1 】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。 标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。 【规则 3-1-2 】标识符的长度应当符合“min-length&&max-information”原则。 几十年前老ANSI C规定名字不准超过6个字符,现今的C++/C不再有此限制。一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。那么名字

Java移位运算符

JAVA基础(JAVA移位运算符) . 移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。 三种移位运算符的移动规则和使用如下所示: <<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 语法格式: 需要移位的数字<<移位的次数 例如:3 << 2,则是将数字3左移2位 计算过程: 3 << 2 首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义: 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2

的1次方,左移n位就相当于乘以2的n次方。 >>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1. 语法格式: 需要移位的数字>>移位的次数 例如11 >> 2,则是将数字11右移2位 计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。 >>>运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。 其他结构和>>相似。 小结 二进制运算符,包括位运算符和移位运算符,使程序员可以在二进制基础上操作数字,可以更有效的进行运算,并且可以以二进制的形式存储和转换数据,是实现网络协议解析以及加密等算法的基础。 实例操作: public class URShift { public static void main(String[] args) { int i = -1; i >>>= 10;

JAVA运算符

JAVA运算符 JA V A有4大运算符,算术运算、位运算、关系运算、逻辑运算 1算术运算符 序号运算符含义 1 + 加法 2 - 减法 3 * 乘法 4 / 除法 5 % 模运算(取余运算) 6 ++ 递增运算 7 -- 递减运算 8 += 加法赋值 9 -= 减法赋值 1、加法运算符,相当于 1 + 1 = 2(补充浮点数与整数、整数与整数、浮点数与浮点数之间 的运算) 2、减法运算符,相当于 2 – 1 = 1 3、乘法运算符,相当于 2 * 2 = 4 4、除法运算符,相当于 4 / 2 = 2 5、取模运算符,其运算结果是整数除法的余数,它还能被用于浮点类型数的取余运算。 public static void main(String[] args) { 1、System.out.println(5 % 2); //整数运算取余 2、System.out.println(2.0 % 1.0); //浮点数运算取余 } 运算结果第一行为1 ,第二行为0.0 6、递增运算符, 1)、 a = x ++ , x++ 不增值。可以看做a = x ; x = x + 1 2)、 a = ++x , ++x 增值。可以看做a = x + 1; x = x + 1 7、递减运算符 1)、 a = x -- , x-- 不减值。可以看做 a = x ; x = x - 1 2)、 a = --x , --x 减值。可以看做a = x – 1 ; x = x - 1

8、加法赋值符,例如x += 1 , 相当于x = x + 1 9、减法赋值符,例如x -=1 , 相当于x = x - 1 注:JA V A运算符的优先级 运算符的优先级决定了多个运算符在一个表达式中运算的顺序,其中最简单的是乘除的优先级大于加减。而一旦表达式比较复杂时,程序员经常会忘记其他优先级规则,所以应该用括号明确规定计算顺序。 例:int a = 100 - 12.5 * 3 + 5 / 2 + 2 ; 这个表达式的顺序如果不加打括号,任何人都会先计算乘除,然后才计算加减。而只要加上括号后,这个表达式就有了个不同的含义。比如:int a = (100 – 12.5) * 3 + 5 / (2 + 2) 2基本数据类型之间的运算 2.1 整数与整数 整数与整数之间的运算规则如下: int/long a 运算符int/long b 结果 2 + 4 6 4 - 2 2 2 * 4 8 5 / 2 2 5 % 2 1 说明:整数与整数之间的计算,加法、减法、乘法和普通数学运算没什么区别, 但是在除法中,碰到有余数时,结果只取完整结果的整数部分。如果整型和长整 型的数计算的话,计算结果的类型是长整形。 2.2 整数与浮点数 整数与整数之间的运算规则如下: int/long a 运算符float/double b 结果 2 + 4.2 6.2 4 - 2.3 1.72 2 * 4.45 8.9

相关主题
文本预览