数据类型
整型
长整型数值后面有一个后缀L或l(如4000000L),十六进制数有前缀0x,八进制有一个前缀0,二进制数前缀为0b或0B
注意:Java没有任何无符号(unsigned)数据类型,要和C语言区分
浮点型
double的数值精度是float的两倍,因此称之为双精度数值。绝大部分应用程序采用double类型,float类型的数值有一个后缀F或f,如3.14f。没有后缀F的浮点数值(如3.14)默认为double类型,当然double类型的数值可以再数值后面添加后缀D或d(如3.14D)
可以使用十六进制表示浮点数值。例如,0.125=2-3可以表示成0x1.0p-3。在十六进制表示法中,使用p表示指数,而不是e。注意,尾数采用十六进制,指数采用十进制。指数的基数是2,而不是10。
浮点数值不适用于无法接受舍入误差的金融计算中,如果数值计算中不允许有任何舍入误差,应该使用BigDecimal类
char类型
字符类型,一般声明如下:
char c=‘a’;
Java中字符采用unicode编码。
boolean类型
布尔类型,只有true和false。需要值得注意的是java中1和0不能当作true和false使用。下方代码能在c语言中通过但在Java中会产生编译错误。必须显式使用i–>=0才能通过编译。
int i=10;
while(i--){
//todo
}
变量
变量初始化
String name;
定义了一个变量。变量的命名遵循驼峰命名。此时使用这个变量会报错,因为还未对该变量进行初始化。
System.out.println(name);//ERROR–变量未初始化
初始化可以用等号进行赋值
String name=“aimerin”;
常量
利用关键字final声明常量。常量只能被赋值一次,一旦赋值之后就无法再更改。习惯上,常量名使用全大写。
final double PI=3.14;//无法再次更改。
关系和boolean运算符
&&表示逻辑“与”,||表示逻辑“或”,!表示逻辑“非”。&&和||运算符按照“短路”方式来求值:短路即第一个操作数已经能够确定表达式的值,第二个操作数就不必计算。
expression1&&expression2
如果expression1为false则不用计算expression2,整个表达式为false
expression1||expression2
如果expression1为true则不用计算expression2,整个表达式为true
位运算符
处理整型类型时,可以直接对组成整型数值的各个位完成操作。这意味着可以使用掩码技
术得到整数中的各个位。位运算符包括:
&和 |或 ^异或 ~非
>>左移,<<右移
符号 | 规则 | 运算方式 |
---|---|---|
& | 与 | 两个位都为1,结果才为1,否则为0 |
| | 或 | 两个位都为0,结果才为0,否则为1 |
^ | 异或 | 两个位相同为0,相异为1 |
~ | 取反 | 0变1,1变0 |
<< | 左移 | 各二进制位全部左移若干位,高位丢弃,低位补0 |
>> | 右移 | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) |
在布尔表达式中,&和|不采用短路的方式求值,也就是说,得到的计算结果之前两个操作数都要计算。
字符串
字符串用String定义,每个用双引号括起来的字符串都是String类的一个实例。要和char区别开来。还有String是对象类型不是基本类型
String greeting=“Hello”;
子串
subString(start,end)方法可以从一个较大的字符串中提取出一个字串提取范围为
String greeting=“Hello”;
String s=greeting.subString(0,3);//s=“Hel”
StringBuilder
StringBuilder支持将多个字符串构建一个字符串。而不是每次连接字符串创建一个新的String对象
具体用法如下:
首先构建一个空的字符串构造器
StirngBuilder builder=new StringBuilder();
调用append方法可以添加一部分内容
builder.append(ch);//可以添加char字符
builder.append(str);//也可以添加String字符串
需要构建字符串时调用toString方法,得到一个String对象
String str=builder.toString();
输入输出
使用Scanner类的可以实现输入操作
Scanner in=new Scanner(System.in);
nextLine()输入一行
输入行中可能含有空格,想要读取一个单词(以空格做为分隔符)就调用
next()
String name=in.nextLine();//输入Aimerin Lajiren
String firstName=in.next();//firstName为Aimerin
nextInt()输入一个整数
nextDouble()输入一个浮点数
大数值
BigInteger和BigDecimal是java.math中两个很有用的类。这两个类可以处理包含任意长度数字序列的数值。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
BigInteger的常见方法
BigInteger a=BigInteger.valueOf(100);//valueOf:将普通的数值转换为大数值
BigInteger c=a.add(b);//add:加法运算,c=a+b
BigInteger d=c.multiply(b);//乘法运算d=c*b
数组
数组的声明
int[] a;
数组的初始化
a=new int[100]
经常将数组的声明和初始化放在一行代码上
int []a=new int[100];
与C语言不一样,java中数组长度不要求是常量,也可以是一个变量。new int[n]会创建一个长度为n的数组
创建一个数字数组时,所有元素都初始化为0,boolean数组的元素会初始化为false,对象数组的元素会初始化为一个null。
其他初始化方式
int [] samllPrimes={2,3,5,7,11,13};//不需要new
new int{17,19,23,29,31,37};
//这种表示法将创建一个新数组并利用括号中提供的值进行初始化,数组的大小就是初始值的个数
smallPrimes=new int{17,19,23,29,31,37};//