1、 数据类型在程序设计中有非常重要的意义:数据类型在程序设计中有非常重要的意义:程序中所有数据都属于各自特定的数据类型,程序中所有数据都属于各自特定的数据类型,数据类型决定了它们的表示方式、取值范围以数据类型决定了它们的表示方式、取值范围以及可用操作。数据类型决定了数据在计算机内及可用操作。数据类型决定了数据在计算机内部的表示方式。部的表示方式。注:Java 技术源程序采用有效的16-bit 双字节字符编码标准(Unicode),而不是8-bit ASCII 文本。因而,一个字母有着更广泛的定义,而不仅仅是a 到z 和A 到Z。Java有4大类运算符:算术运算符、逻辑运算符、关系运算符和位运算符
2、。2.11.1 算术运算符运算符例 子 说 明+x+y求x 和y 之和。x、x y作一元运算符表示对x 符号取反,作二元运算符表示求x 减y 的值。*x*y求x 和y 之积。/x/y如果x 和y 均为int 类型,则表示x 整除y;否则执行普通除法。%x%y表示x 对y 取模。+x+,+xx自增1x,xx自减1运 算符例 子说 明 x y如果x 小于y 则求值结果为true,否则为false。=x=x=y如果x 大于或等于y 则求值结果为true,否则为false。x y如果x 大于y 则求值结果为true,否则为false。!=x!=y如果x 不等于y 则求值结果为true,否则为false
3、。运 算符例 子 说 明&x&y与运算,若x 和y 均为true 则结果为true,否则结果为false。|x|y或运算,若x 或y 其中之一为true 则结果为true,否则为false。!x非运算,若x 为true 则结果为flase,否则为true。运算符 名称示例说明&位与x&y把x和y按位求与|位或x|y把x和y按位求或位非x把x按位求非位异或xy把x和y按位求异或右移xy把x的各位右移y位左移x右移xy把x的各位右移y位,左边填0 1、赋值运算符、赋值运算符 赋值运算符是一个等号“=”,它的作用是将一个值赋给一个变量。例如:int x=0,y=1;x=y+1;2、条件运算符、条件运
4、算符 Java提供一个特别的三元运算符经常用于取代简单的if-else 语句。条件运算符的通用格式如下:表达式1?表达式2:表达式3例子:a=b=0?2:c/d;3、字符串连接运算符、字符串连接运算符“+”对于“+”运算符,如果有一个操作元为String类型,则为字符串连接运算符。例如:System.out.println(Hello!+a+7);优先级运算符结合性1().从左到右2!+(正)-(负)+-从右向左3*/%从左向右4+(加)-(减)从左向右5从左向右6=instanceof从左向右7=!=从左向右8&(按位与)从左向右9从左向右10|从左向右11&从左向右12|从左向右13?:从
5、右向左14=+=-=*=/=%=&=|=从右向左1、自动类型转换、自动类型转换 当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。这些类型由“小”到“大”分别为:(byte,short,char)intlongfloatdouble。注意,这里我们所说的注意,这里我们所说的“大大”与与“小小”(也可以说高级和低级),(也可以说高级和低级),并不是指占用字节的多少,而是指表示值的范围的大小。并不是指占用字节的多少,而是指表示值的范围的大小。2、强制类型转换、强制类型转换 如果需要把数据类型相对较高的数据或变量赋值给数据类型相对较低的变量,就必须
6、进行强制类型转换。例如,7.5为double型常量数据,将其赋值给int型变量时需要强制类型转换:int i=(int)7.5;2.12 程序控制结构 一、问题描述一、问题描述从键盘输入三个整数到变量a,b,c中,然后按照由小到大的顺序输出。二、算法和实现二、算法和实现实现由小到大的顺序的算法:1、如果 a b,就把a和b中的值互换(使a c,就把a和c 中的值互换(使a c,就把b和c 中的值互换(使b c)经过这三步,就可以保证 a b b)t=a;a=b;b=t;/实现实现 a 和和 b 的值的互换的值的互换 if(ac)t=a;a=c;c=t;/实现实现 a 和和 c 的值的互换的值的
7、互换 if(bc)t=b;b=c;c=t;/实现实现 b 和和 c 的值的互换的值的互换 System.out.println(由小到大:由小到大:+a+,+b+,+c);2.14.2 分段函数求值分段函数求值一、问题描述一、问题描述y=x+1 2x 1 4x+3(x 5)二、算法和实现二、算法和实现本题比较简单,根据x的值的不同,按不同的公式计算y的值。有一个函数如下,写一个程序,输入 x,输出 y 的值。import java.util.Scanner;/引入引入Scanner类类public class PiecewiseFunctionDemo public static void m
8、ain(String args)int x,y;/创建创建Scanner类对象类对象Scanner input=new Scanner(System.in);System.out.print(请输入请输入 x 的值:的值:);x=input.nextInt();/从键盘接收一个整数从键盘接收一个整数if(x=1&x 0)System.out.print(x%10);/输出最后一位数字输出最后一位数字 n+;/位数加位数加 1 x=x/10;/去掉最后一位数字去掉最后一位数字System.out.println(n此整数的位数是:此整数的位数是:+n);1.问题描述问题描述判断101200之间有
9、多少个素数,并输出所有素数。2.算法和实现算法和实现所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数。判断一个整数n是否为素数的方法:用n分别去除从2到n的平方根,只要有一个能被整除,则表明n不是素数,反之是素数。完整的的程序如下:public class PrimeNumberDemo public static void main(String args)int count=0;/计数变量计数变量 /偶数不是素数,所以只考虑奇数偶数不是素数,所以只考虑奇数 for(int i=101;i 200;i+=2)boolean flag=true;/先假设先假设 i 是素数是素数 do
10、uble end=Math.sqrt(i);/算出算出 i 的平方根的平方根 for(int j=2;j=end;j+)if(i%j=0)/如果能被整除说明不是素数如果能被整除说明不是素数flag=false;/设置不是素数标志设置不是素数标志break;/不用继续测试,退出本层循环不用继续测试,退出本层循环 if(flag)/如果是素数如果是素数 count+;/计数加计数加 1 System.out.print(i+);/输出此素数输出此素数 if(count%10=0)/这是输出格式控制,每行这是输出格式控制,每行10个素数个素数System.out.println();/换行换行 Sy
11、stem.out.println(n素数个数是素数个数是:+count);作业1输出1000以内所有的 水仙花数。所谓 水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数,因为153=135333。2猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。(提示:使用迭代方法。用迭代从后往前计算,知道第10天的,就能推算出第9天的,以此类推,最后计算出第1天的。关键是写出递推公式。)3大马
12、、小马和马驹共100匹,共驮100片瓦。大马一驮三,小马一驮二,马驹二驮一,一次驮完,三种马都驮,请输出所有组合。(提示:马驹数应该是偶数。)4输出9*9口诀。(提示:注意输出格式。)5.有有n个小孩围成一圈,顺序排号。从第一个小孩开始报数(从个小孩围成一圈,顺序排号。从第一个小孩开始报数(从1到到3报数),报数),凡报到凡报到3的小孩退出圈子,问最后留下的是原来第几号的小孩。的小孩退出圈子,问最后留下的是原来第几号的小孩。(参考算法:(参考算法:1.定义一个大小为定义一个大小为n(n值让用户先从键盘输入)的布尔类型值让用户先从键盘输入)的布尔类型的数组。每个数组元素代表一个孩子是否在圈里(的
13、数组。每个数组元素代表一个孩子是否在圈里(true为在圈里,为在圈里,false表表示出局)。开始时数组的所有元素都初始化成示出局)。开始时数组的所有元素都初始化成true,代表所有的孩子都在,代表所有的孩子都在圈里;定义一个整型的游戏人数计数器变量,初值为圈里;定义一个整型的游戏人数计数器变量,初值为n;定义一个整型的报;定义一个整型的报数计数器变量,初值为数计数器变量,初值为0;定义一个当前处理的数组元素下标变量,初值为;定义一个当前处理的数组元素下标变量,初值为0。2.以游戏人数计数器变量的值大于以游戏人数计数器变量的值大于1为条件循环(只要游戏中人数多于为条件循环(只要游戏中人数多于一
14、个就继续游戏)。在循环中如下处理:(一个就继续游戏)。在循环中如下处理:(1)如果当前处理的数组元素为)如果当前处理的数组元素为true,报数计数器变量就加,报数计数器变量就加1。(。(2)如果报数计数器变量的值为)如果报数计数器变量的值为3,那么,那么当前遍历的数组元素的值修改为当前遍历的数组元素的值修改为false,表示当前数组元素所代表的小孩儿,表示当前数组元素所代表的小孩儿出局。报数计数器变量的值修改为出局。报数计数器变量的值修改为0,这样下次重新从,这样下次重新从1开始计数。游开始计数。游戏人数计数器变量减戏人数计数器变量减1(游戏中的人又少了一个)。(游戏中的人又少了一个)。(3)遍历的数组下标)遍历的数组下标加加1,如果下标等于,如果下标等于n了,让下标为了,让下标为0,这样就做到了反复循环遍历数组了。,这样就做到了反复循环遍历数组了。3.循环结束后,数组元素中唯一的值为的循环结束后,数组元素中唯一的值为的true元素所代表的小孩儿就是剩元素所代表的小孩儿就是剩下的小孩,下标加下的小孩,下标加1就是小孩的号码。)就是小孩的号码。)