2.1标识符和关键字
Java使用Unicode标准字符集。这个字符集采用16位编码,它的前256个字符与ASCII字符集完全一致。除此以外,这个字符集还提供了其他的语言文字,如汉字等等
Unicode的一个常识从大到小的排序:小写字母a-z----大写字母A-Z-----数字0-9
(也就是:先后顺序是数字——大写字母——小写字母)
1.标识符
1.标识符就是名称。
2.Java标识符的规则:
1)由字母、下划线、数字和美元符号$等组成
2)并且第一个字符不能是数字。
3)区分大小写
3.标识符命名的约定习惯:
1)变量、对象、方法、包名都采用小写字母,如果由多个单词组成,那么首字母小写,其余单词首字母大写。eg: getAge
2)类名的首字母需要大写
3)常量名全部大写
2.关键字
都是小写单词,有着特殊含义。
2.2数据类型与常量、变量
2.2.1分类
2.2.2基本数据类型
1.整数类型
数据类型 | 所占字节 | 是否可以取到负数 |
long(长整型) | 8 | 可以 |
int | 4 | 可以 |
short | 2 | 可以 |
byte | 1 | 可以 |
整数表示形式:十进制、八进制(以0为前缀,如013)、十六进制(以0x或0X为前缀)
2.浮点数类型
科学计数法表示浮点数:2.5E4=2.5×10^4
类型 | 字节 |
float | 4 |
double | 8 |
浮点数是默认为double的。如果想要表示float小数,在后面加f,比如3.45f。
(注:float不意味着只能保留一位小数,相反,它最多可以保留六位小数)
3.字符类型(char)
一个字符占两个存储单元
三种表示方法:
1.单引号括起来,比如‘a’
2.Unicode码表示,前缀为\u,比如\u0043='C'
3.转义字符:\n:换行(转义字符长度也是一个字符)
多个字符组成字符串(类型),用“ ”括起来。
4.布尔类型
只有true和false两个值,大小是一个字(1B)
java里面不允许用1代表true, 0代表false
布尔类型可以参与逻辑运算,但是不能参与算术运算
2.2.3常量
符号常量(标识符表示的常量)四个基本要素:名称、类型、值、使用范围。
符号常量声明方式:(用关键字final修饰)
(常量之后不可以修改了)
final [修饰符] 类型标识符 常量名(后面赋值)
eg:
final float PI=3.14159
(注意,3.14159是默认double的,double不能转float(高转低需要强转),因此上面的语句是错误的。)
因此需要定义成下面这种:
final float PI=3.14159f;
2.2.4变量
变量也有四个基本要素:名称、类型、值、使用范围。
变量先声明后使用。
//变量的声明方式:
[修饰符] 类型标识符 变量名(后面可以赋值)
eg:
float x=25.4,y=20;
上面的定义会报错,是因为25.4默认是double类型,double——float是高转低,需要强转;
y=20反而没错,因为int——float会自动转换。
应该是;
float x=25.4f,y=20;
2.2.5实际练习
public class Exercise
{ public static void main(string args[])
{ float a=35.45f;
string str1="\n";
boolean instance1=false;
System.out.println("a="+a+str1+"逻辑状态1="+instance1);
}
结果会输出:
a=35.45
逻辑状态1=false
上面的代码有这些注意事项:
·println里面“ ”的内容会原封不动打印在屏幕上,而加号(+)表示在前面内容显示完之后再显示后面的内容。如果没有双引号括住,那么会转化成它实际的意义,比如str1转化成换行。
·数字默认是十进制输出
2.3运算符和表达式
关于单目、双目、多目运算符:
单目:一个数搁哪儿自个算,比如++、--、-(取负)
双目:表示两个数的运算关系
优先级:单目>双目
2.3.1运算符
1.算数运算符
双目:加、减、乘、除、取余(%),最后一种在C语言中,只能用于整数类型,但是在Java中,也可以用于小数类型。
eg:-5.0%1.5=-0.5(取余结果的符号和被除数相同)
单目:++、--、-(前两种只能用于整数类型变量)
++n和n++的区别:前者先++,再取运算后的n值;后者先取n值,再++。
哪个在前就先干什么,这样子记。
2.关系运算符(都是双目)
>, <, >=, <=, (前四种不能用于比较字符串)==, !=
六者都可以用于整数、小数以及字符类型(字符类型比较是依据Unicode的值)。
关系成立为true,不成立为false(结果为bool型)
3.逻辑运算符
对boolean类型运算,&&、||、!(前俩双目,后面单目)
(不能针对Int,double等类型用!)
与运算和或运算遵循数电里面的“与门”“或门”。
&&和||具有短路计算的功能,即从左到右判断是否满足,一旦满足条件就停止计算。
4.位运算符
~(按位取反,eg: ~x)、&、|、^(按位异或)、<<、>>、>>>(无符号右移位)
5.赋值运算(=)
复合赋值运算:
+=、-=、%=、>>>=、&=、|=、*=、/=、^=、<<=、>>=
6.条件运算符(三目运算)
a?b:c
意思:a对吗?对了执行b,不对执行c。
7.括号运算符
2.3.2表达式
数据类型转换:
1.精度低转精度高——可以自动转换
2.精度高转精度低——需要强制转换(会丢失信息)
强制转换只能把整体数值进行一个转换
字符型可以自动转换为int型,数值为ASCII值。
Int到char只能强制转换。
例子:大小写转换
这里有个很有意思的事情:
int i=15,j=4;
float f1;
f1=i/j;
结果是f1=3.0.因为在i/j的时候,他是不管左面是int还是float的,只有当运算完毕的时候,才进行类型的转换。
如果是f1=(float)i/j;
f1=3.75
2.4数据的输入和输出
Scanner类:使用该类创建的对象可以扫描控制台的输入,即程序直接读取键盘输入的数据
Scanner in=new Scanner(System.in); //创建Scanner类下面的对象in,System.in 属于标准输入流
之后调用Scanner类的下列方法读取控制台输入的各类数据
int a=in.nextInt(); //输入int类型的数据
double b=in.nextDouble();//输入double类型的数据
float c=in.nextFloat();//输入float类型的数据
使用Scanner类,java源文件中必须包含
import java.util.Scanner
或者import java.util.*
这里util相当于一个库文件,Scanner是下面的一个类。用*表示导入util的所有类,当然包括了Scanner
2.5常用数学函数
java.lang.Math类提供方法来执行基本数学函数的运算,接下来所有的方法都是Math.XXXX()
1.abs()方法:返回绝对值
eg:int x=Math.abs(50)
2.pow(double y, double x),返回double类型,实现y^x
3.round()方法:返回最接近操作数的整数,算法是将操作数加0.5,并向下取整。对于正数而言就是四舍五入。常常用于保留x位小数
Math.round(11.5)返回12
Math.round(-11.3)返回-11
Math.round(-11.5)返回-11
Math.round(-11.6)返回-12
//保留两位小数
x=Math.round(x*100)/100.0;
//保留三位小数
x=Math.round(x*1000)/1000.0;
x位小数以此类推
4.sqrt( ):开平方根,返回double类型
5.max( ):返回最大值
6.min( ):返回最小值
7.random( ):返回一个double类型,范围大于等于0.0小于1.0(即0-0.999999),可以产生固定范围内的随机整数
公式:(int)((上界-下界+1)*Math.random()+下界)
比如:a=(int)(Math.random()*10);产生0-9的随机整数
8.sin()方法:返回给定角度(需要用弧度制)的正弦值
Math里面提两个常数:Math.PI表示圆周率, Math.E表示常数e
9.cos()方法
10.exp()方法:返回常量e为底数的幂函数
11.log()方法:返回常量e为底的自然对数
2.6用Java写表达式
判断a和b同为正整数或者同为负整数
a*b>0 && a==(int)a && b==(int)b
z=y+++x,是相当于z=(y++)+x