Java入门教程二(语言基础)
常量与变量
常量值又称为字面常量,它是通过数据直接表示
常量
实型常量值
Java 的实型常量值主要有如下两种形式
十进制数形式:由数字和小数点组成,且必须有小数点,如 12.34、-98.0
科学记数法形式:如 1.75e5 或 32&E3,其中 e 或 E 之前必须有数字,且 e 或 E 之后的数字必须为整数。
布尔型常量值
Java 的布尔型常量只有两个值,即 false(假)和 true(真)
字符型和字符串常量值
Java 的字符型常量值是用单引号引起来的一个字符,如 \’e\’、E\’。需要注意的是,Java 字符串常量值中的单引号和双引号不可混用。双引号用来表示字符串,像 “11”、”d” 等都是表示单个字符的字符串。
定义常量
常量不同于常量值,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。Java 语言使用 final 关键字来定义一个常量。
语法如下所示:
final dataType variableName
final int COUNT=10
变量
变量是用来描述一条信息的别名,示例如下:
DataType identifier=value; 或 DataType identifier;
String name;
String name = "HelloWorld.Link"
变量的作用域
根据作用域的不同,一般将变量分为不同的类型:类变量、局部变量、方法参数变量等。
类变量
类变量也称为成员变量,声明在类中,不属于任何一个方法,作用域是整个类。示例如下:
public class HelloWorld
{
private int age=20; //定义类变量 price
private String name; //定义类变量 name
}
局部变量
局部变量是指在方法或者方法代码块中定义的变量,其作用域是其所在的代码块。
public class HelloWorld
{
public static void main(String[] args)
{
int age=30;
if(age>10)
{
int test=3; //声明一个int类型的局部变量,只能在if内使用
}
}
}
方法参数变量
作为方法参数声明的变量的作用域是整个方法。
public class HelloWorld
{
public static void test(int input) //声明一个方法参数变量,只能在方法体内使用
{
System.out.println("input="+ input);
}
}
数据类型
整数类型
Java 定义了 4 种整数类型变量:字节型(byte)、短整型(short)、整型(int)和长整型(long)。有符号的值,正数或负数。
字节型(byte)
byte 类型是最小的整数类型。当用户从网络或文件中处理数据流时,或者处理可能与 Java 的其他内置类型不直接兼容的未加工的二进制数据时,该类型非常有用。
短整型(short)
short 类型限制数据的存储为先高字节,后低字节,这样在某些机器中会出错,因此该类型很少被使用。
整型(int)
int 类型是最常使用的一种整数类型。
长整型(long)
对于大型程序常会遇到很大的整数,当超出 int 类型所表示的范围时就要使用 long 类型。
示例如下:
public static void main(String[] args)
{
byte h=10; //声明一个byte类型的变量并赋予初始值为10
short e=20; //声明一个short类型的变量并赋予初始值为20
int l=30; //声明一个int类型的变量并赋予初始值为30
long o=40; //声明一个long类型的变量并赋予初始值为40
}
浮点类型
浮点类型是带有小数部分的数据类型,也叫实型。浮点型数据包括单精度浮点型(float)和双精度浮点型(double),代表有小数精度要求的数字。单精度浮点型(float)和双精度浮点型(double)之间的区别主要是所占用的内存大小不同,float 类型占用 4 字节的内存空间,double 类型占用 8 字节的内存空间。双精度类型 double 比单精度类型 float 具有更高的精度和更大的表示范围。
public static void main(String[] args)
{
double a=2348.4; //定义double类型的变量
float b=0.01; //定义float类型的变量
}
布尔类型
布尔类型(boolean)用于对两个数值通过逻辑运算,判断结果是“真”还是“假”。
boolean a=true;
boolean b=false;
字符类型
Java 语言中的字符类型(char)使用两个字节的 Unicode 编码表示,它支持世界上所有语言,可以使用单引号字符或者整数对 char 型赋值。
char a=\'D\';
char b=\'5\';
运算符
算数运算符
运算符按照操作数的数量可以分为单目运算符、双目运算符和三目运算符。算术运算符的功能是进行算术运算,除了经常使用的加(+)、减(-)、乘()和除(\)外,还有取模运算(%)。加(+)、减(-)、乘()、除(\)和我们平常接触的数学运算具有相同的含义。求余运算(%)是指连接两个变量或常量以进行除法运算,结果取它们的余数。
int a=4,b=2,c=3;
int d=a*(b+c)%c; //最终d为:2
赋值运算符
赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“=”,它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。赋值运算符与其他运算符一起使用,可以表达多种赋值运算的变异效果。
+= 将该运算符左边的数值加上右边的数值, 其结果赋值给左边变量本身
-= 将该运算符左边的数值减去右边的数值, 其结果赋值给左边变量本身
*= 将该运算符左边的数值乘以右边的数值, 其结果赋值给左边变量本身
/= 将该运算符左边的数值整除右边的数值, 其结果赋值给左边变量本身
%= 将该运算符左边的数值除以右边的数值后取余,其结果赋值给左边变量本身
int a=5; a+=2; //a=7
int a=5; a-=2; //a=3
int a=5; a*=2; //a=10
int a=5; a/=2; //a=2
int a=5; a%=2; //a=1
逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。逻辑运算符包括 &&、||、!。其中 && 和 || 是双目运算符,实现逻辑与、逻辑或;!是单目运算符,实现逻辑非。
int x=1;y=99
x>0 && x<=100 //输入ture
关系运算符
关系运算符用来比较两个值的关系。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。> 大于运算符,>= 大于或等于运算符,<小于运算符,<=小于或等于运算符,==相等运算符,!=不相等运算符
2>3 //false
4>=2 //true
2<3 //true
4<=2 //false
4==4 //true
4!=2 //true
自增和自减运算符
在对一个变量做加 1 或减 1 处理时,可以使用自增运算符 ++ 或自减运算 –。++ 或 — 是单目运算符,放在操作数的前面或后面都是允许的。++ 与 — 的作用是使变量的值增 1 或减 1。操作数必须是一个整型或浮点型变量。i++将 i 的值先使用再加 1 赋值给 i 变量本身,++i 将 i 的值先加 1 赋值给变量 i 本身后再使用,i–将 i 的值先使用再减 1 赋值给变量 i 本身,–i 将 i 的值先减 1 后赋值给变量 i 本身再使用
int i=1;
int j=i++;//i为2,j为1
int x=1;
int y=++x;//x为2,y为2
int a=1;
int b=a--;//a为0,b为1
int c=1;
int d=--c;//c为0,d为0
位运算符
位逻辑运算符包含 4 个:&(与)、|(或)、~(非)和 ^(异或)。除了 ~(即位取反)为单目运算符外,其余都为双目运算符。& 按位进行与运算,|按位进行或运算,^按位进行异或运算,~按位进行取反运算
4 & 5 //结果:4
4 | 5 //结果:5
4 ^ 5 //结果:1
~ 4 //结果:-5
条件运算符
条件运算符的符号表示为“?:”,使用该运算符时需要有三个操作数,因此称其为三目运算符。
int x,y,z;
x=6,y=2;
z=x>y?x-y:x+y;//z为4
数据类型转换
数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。
隐式转换
自动类型转换的实现需要同时满足两个条件:①两种数据类型彼此兼容,②目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)。例如 byte 类型向 short 类型转换时,由于 short 类型的取值范围较大,会自动将 byte 转换为 short 类型。
int a=1;
int b=2;
double c=a+b;//c为3.00
显式转换
当两种数据类型不兼容,或目标类型的取值范围小于源类型时,自动转换将无法进行,这时就需要进行强制类型转换。
int a=3;
double b=5.0;
a=(int)b;//a为5