资源描述
2.2.数据类型和运算符数据类型和运算符本章概述本章概述标识符数据类型 整型 浮点型 字符型 布尔型基本数据类型的类型转换 自动类型转换 强制类型转换常量和变量运算符 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 条件运算符SXT本章技能点列表SXT技能点名称技能点名称难易程度难易程度认知程度认知程度重要程度重要程度标识符易记忆*数据类型分类易记忆*常量和变量易记忆*整数数据类型中记忆*浮点数据类型中记忆*字符数据类型中记忆*布尔数据类型易记忆*final常量中应用*Scanner类中应用*SXT本章技能点列表SXT技能点名称技能点名称难易程度难易程度认知程度认知程度重要程度重要程度算术运算符中应用*赋值运算符中应用*关系运算符中应用*逻辑运算符难应用*位运算符难了解*条件运算符中应用*运算符的优先级别和结合性中理解*基本数据类型类型转换中应用*SXT标识符Identifier SXT 作用 常量、变量、方法、类和包等的名称 命名规则 必须以字母、_下划线、美元符$开头。其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合 大小写敏感,长度无限制。不可以是Java的关键字。注意 Java不采用通常语言使用的ASCII字符集 Java采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。(不建议大家使用汉字来定义标识符!)正确的:正确的:name,Namename,Name,user_nameuser_name,$name,_name,$name,_name,publicNamepublicName;错误的:错误的:9username,user name,public9username,user name,publicSXT关键字/保留字 SXT Java关键字是Java语言保留供内部使用的,如class用于定义类。关键字也可以称为保留字,它们的意思是一样的。注意:不要刻意去背!后面会慢慢介绍每个关键字的用法SXT字符集简介 SXT ASCII 英文字符集 1个字节 ISO8859-1 西欧字符集 1个字节 BIG5 台湾的大五码,表示繁体汉字 2个字节 GB2312 大陆使用最早、最广的简体中文字符集 2个字节 GBK GB2312的扩展,可以表示繁体中文 2个字节 GB18030 最新GBK的扩展,可以表示汉字、维吾尔文、藏文等中华民族字符 2个字节 Unicode 国际通用字符集 2个字节SXTJava基本数据类型 SXT Java是一种强类型语言 常量是有数据类型的 变量都必须声明其数据类型SXT常量和变量 SXT 常量变量定义 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。变量举例:在2D游戏程序中,需要代表人物的位置,则需要2个变量,一个是x坐标,一个是y坐标,在程序运行过程中,这两个变量的值会发生改变 常量举例 代表常数,便于程序的修改(例如:圆周率的值)增强程序的可读性(例如:常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其数值分别是1、2、3和4)在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。SXT常量和变量 SXT Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明,只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:type varName =value,varName=value;注意事项:每个变量都有类型,类型可以是基本类型,也可以是引用类型。变量名必须是合法的标识符。SXT常量和变量 SXT 电脑使用内存来记忆计算时所使用的数据。人类采用旅馆来存储外出住宿的人们。内存中变量好比旅馆的房间,内存中常量好比住旅馆房间的人 int age=20;age=21;String name=“小明”;房间房间 房间名字房间名字 房间类型房间类型 入住的客人入住的客人 变量变量 变量名变量名 变量类型变量类型 变量值变量值 对应对应SXT变量声明 SXT 变量声明举例:double salary;boolean done;long earthPopulation;int age;可以在一行中声明多个变量:int i,j;/both are integers 不提倡这种风格,逐一声明每一个变量可以提高程序可读性。可以将变量的声明和初始化放在同一行中,例如:int age=18;float e=2.718281828f;SXT整型数据类型 SXT 整型常量 十进制整数,如:99,-500,0 八进制整数,要求以 0 开头,如:015 十六进制数,要求 0 x 或 0X 开头,如:0 x15 整型变量 整型常量默认为int型,声明long型常量可以后加 l 或 L(建议使用大写,小写容易误认为数字1),如:long a=55555555;/不出错,在Int表示的范围内(21亿内)。long b=55555555555;/不加l出错,已经超过int表示的范围。SXT浮点型数据类型SXT 浮点类型常量 十进制数形式,例如:3.14 314.0 0.314 科学记数法形式,如 314e2 314E2 314E-2 double f=314e2;/314*102-31400.0 double f2=314e-2;/314*10(-2)-3.14 浮点型变量 float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。double类型:双精度类型 精度是float类型的两倍,绝大部分应用程序都采用double类型。注意 浮点常量默认为double。要变为float,需在后面增加F/f.如:3.14F 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。SXT字符数据类型(2个字节)SXT 单引号用来表示字符常量。例如A是一个字符,它与“A”是不同的,“A”表示含有一个字符的字符串。char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;ASCII码占1个字节,可允许有128个字符(最高位是0),是Unicode编码表中前128个字符。Java 语言中还允许使用转义字符 来将其后的字符转变为其它的含义,char c2=n;/代表换行符 char类型在内存中存储的是该字符的Unicode编码值,所以char类型可以当做int类型来处理SXT布尔数据类型(一位,不是一个字节)SXT boolean类型有两个值,true和false boolean 类型用来判断逻辑条件,一般用于程序流程控制 实践:请不要这样写:if(is=true&done=false),只有新手才那么写。对于任何程序员 if(whether&!done)都不难理解吧。所以去掉所有的=fasle 和=true。SXTfinal 常量 SXT 使用final修饰的变量,只能被初始化一次,变成了常量。final常量是有名称的public class Constants public class Constants public static void main(String public static void main(String argsargs)final double PI=3.14;final double PI=3.14;/PI=3.15;/error/PI=3.15;/error double r=4;double r=4;double area=PI double area=PI*r r*r;r;double circle=2 double circle=2*PI PI*r;r;System.out.printlnSystem.out.println(area=+area);(area=+area);System.out.printlnSystem.out.println(circle=+circle);(circle=+circle);SXT命名规则(规范)SXT 所有变量、方法、类名:见名知意 变量、方法名:首字母小写和驼峰原则 run(),runRun(),age ageNew monthSalary 常量:大写字母和下划线:MAX_VALUE 类名:首字母大写和驼峰原则:Man,GoodManSXT运算符 SXT Java 语言支持如下运算符:算术运算符:+,-,*,/,%,+,-赋值运算符=扩展赋值运算符:+=,-=,*=,/=关系运算符:,=,(了解!)条件运算符?:相关概念辨析+运算符 操作符 Operator 5+6 表达式 expression 5 6 操作数 Operand int m=5+6;语句 SentenceSXT算术运算符 SXT 注意:1:/除 6/4=1 6/4.0=1.5 2:%取模(求余)6%4=2 3:+6+a=103 6+“a“=6 4:+a=2;b=+a+9;a=2;b=a+9;+:字符串相加,只要有一个操作数是字符串,自动变为字符串相连SXT算术运算符 SXT 二元运算符类型提升:整数运算:如果两个操作数有一个为Long,则结果也为long 没有long时,结果为int。即使操作数全为shot,byte,结果也是int.浮点运算:如果两个操作数有一个为double,则结果为double.只有两个操作数都是float,则结果才为float.一元运算符(+,-):int a=3;int b=a+;/执行完后,b=3。先给b赋值,再自增。int c=+a;/执行完后,c=5。先自增,再给b赋值SXT赋值运算符SXT 基本赋值运算符 扩展赋值运算符 算术运算符和赋值运算符结合SXT关系运算符SXT 关系运算符用来进行比较运算 关系运算的结果是布尔值:true/false 注意 区分=和=不等于是!=不是运算符含义示例=等于a=b!=不等于a!=b大于ab小于a=大于或等于a=b=小于或等于a 右移;左边空位补最高位即符号位 b=a 2 无符号右移,左边空位补0 b=a 2 左移;右边空位以补0b=a 1 SXT条件运算符 SXT 语法格式 x?y:z 唯一的三目运算符 执行过程 其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。经常用来代替简单的if-else判断!intint a=3;a=3;intint b=5;b=5;String String strstr=;=;if(ab)if(ab)strstr=ab;=ab;=ab;intint a=3;a=3;intint b=5;b=5;String String strstr=(ab)?ab;(ab)?ab;SXT运算符的优先级SXT 不需要去刻意的记优先级关系 赋值三目逻辑关系算术右)内存中发生了什么 类型转换的方向 低-高 byte short,charint longfloat doublebyte b=10;byte b=10;System.out.printlnSystem.out.println(b=+b);(b=+b);intint n=b;n=b;System.out.printlnSystem.out.println(n=+n);(n=+n);00000000000000000000000000000000000000000000000000001010000010100000101000001010byte10int 10SXT基本数据类型之间的转换 SXT 赋值运算时的转换 强制类型转换(左右侧宽度 自动转换 左侧宽度sum=sum+64.3关系运算符 num2?num1:num2;4.6 位运算符 了解即可4.7 运算符的优先级别1.不用刻意背诵,多做练习2.单目算术关系逻辑条件赋值5.基本数据类型的类型转换1.自动类型转换 double d=5;2.强制类型转换 int n=(int)3.14;6.其他6.1.字符集 Java采用Unicode字符集 常用字符集都兼容ASCII字符集6.2.final常量 使用final修饰变量,变量变成常量,值不能再被改变6.3.Scanner 可以接收来自键盘的输入
展开阅读全文