目录
例 2.1 声明double型常量,并给常量赋值,使用常量进行计算。
例2.16让byte,short两种类型的变量做无符号右移操作
2.1 代码注释与编码规范
在程序代码中适当地添加注释可以提高程序的可读性和可维护性。好的编码规范可以使程序更易阅读和理解。本节将介绍Java中的几种代码注释以及应该注意的编码规范。
2.1.1代码注释
通过在程序代码中添加注释可提高程序的可读性。注释中包含了程序的信息,可以帮助程序员更好地阅读和理解程序。在Java源程序文件的任意位置都可添加注释语句。注释中的文字Java编译器不进行编译,所有代码中的注释文字对程序不产生任何影响。所以我们不仅可以在注释中写程序代码的解释说明、设计者的个人信息,也可以使用注释来屏蔽某些不希望执行的代码。Java语言提供了3种添加注释的方法,分别为单行注释、多行注释和文档注释。
1.单行注释
“//”为单行注释标记,从符号“//”开始直到换行为止的所有内容均作为注释而被编译器忽略。语法如下:
//注释内容
例如,以下代码为声明的int型变量添加注释:
int age; //声明int 型变量用于保存年龄信息
2. 多行注释
“/**/”为多行注释标记,符号“/*”与“*/”之间的所有内容均为注释内容。3. 文档注释
“/**/”为文档注释标记。符号“/”与“*/”之间的内容均为文档注释内容。当文档注释出现在声明(如类的声明、类的成员变量的声明、类的成员方法声明等)之前时,会被Javadoc 文档工具读取作为Javadoc文档内容。文档注释的格式与多行注释的格式相同。对于初学者而言,文档注释并不重要,了解即可。
2.2变量与常量
2.2.1标识符与关键字
1.标识符
标识符可以简单地理解为一个名字,用来标识类名、变量名、方法名、数组名等有数然序列。
Java语言规定标识符由任意顺序的字母、下划线(_)、美元符号($)和数字组成,并助个字符不能是数字。标识符不能是Java中的保留关键字。
下面的标识符都是合法的:
time
akb48
interface
O 0
BMW
$$$
编写Java代码有一套公认的命名规范,如下。
(1)类名:通常使用名词,第一个单词字母必须大写,后续单词首字母大写。
(2)方法名:通常使用动词,第一个单词首字母小写,后续单词首字母大写。
(3)变量:第一个单词首字母小写,后续单词首字母大写。
(4)常量:所有字母均大写。
(5)单词的拼接:通常使用"userLastName"方式拼接单词,而不是"user_last_name"
2.关键字
关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这些字作为标识符来使用。简
单理解为凡是在Eclipse变成红色粗体的单词,都是关键字。
Java关键字
2.2.2 变量
(1)变量名必须是一个有效标识符。
(2)变量名不可以使用java 中的关键字。
(3)变量名不能重复。
(4)应选择有意义的单词作为变量名。
2.2.3 常量
过程中一直不会改变的量称为常量,通常也被称为“final变量”。常量在整个程序中只能被赋值一次。在为所有的对象共享值时,常量是非常有用的。常量名通常使用大写字母,但这并不是必须的。很多Java程序员使用大写字母表示常量,是为了清楚地表明正在使用常量。
例2.1 声明double 型常量,并给常量赋值,使用常量进行计算。
例 2.1 声明double型常量,并给常量赋值,使用常量进行计算。
public class Const {
public static void main(String[] args) {
final double PI =3.14; //声明常量 PI
System.out.println("常量PI的值为:"+PI);
System.out.println("半径为3的圆的周长为:"+(PI*2*3));
System.out.println("半径为4的圆的面积为:"+(PI*4*4));
}
}
2.3基本数据类型
例如,声明int型变量,代码如下:
int x //声明int型变量x
int x,y; //同时声明int 型变量x,y
int x=10,y= -5;//同时声明int型变量x,y并赋予初值
int x = 5+23; //声明int 型变量x,并赋予公式(5+23)计算结果的初值
int型变量在内存中占4字节,也就是32位bit,在计算机中bit是用0和1来表示的,所以int 5在计算机中这样显示:
00000000 00000000 00000000 00000101
上面这段代码在Java运行时,等同于下面这段代码:
int a = 15;
int b = 20;
int c = a+b;
System.out.println(c); //输出 35
例2.2给int型变量按照十进制、八进制、十六进制赋值
public class Radix {
public static void main(String[] args) {
int a=11; //十进制整型
System.out.println(a);//输出十进制表示的整型值
int b=011; //八进制整型
System.out.println(b);//输出八进制表示的整型值
int c=0x11; //十六进制整型
System.out.println(c);//输出十六进制表示的整型值
}
}
例2.3 展示4.35*100的错误结果,并给出解决方案。
public class Doudle {
public static void main(String[] args) {
double a=4.35*100; //用double计算4.35*100的结果
System.out.println("a="+ a);//输出这个double值
int b= (int) a;//将double类型强制转换成int 类型
System.out.println("b="+b);//输出int 值
System.out.println("a的四舍五入值="+Math.round(a));
}
}
例2.4计算2.0-1.9的结果
public class DoubleUNAcc2 {
public static void main(String[] args){
double a=0.1;
double b=2.0-1.9;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("a==b的结果:"+(a==b));//a==b的结果是false
/*Math.abs()是取绝对值的方法,1e-6表示1+10的-6次方,是计算机中最小数的概念
*如果两数之差的绝对值小于最小数,则认为这两个数是相等的。
*/
boolean bool =Math.abs(a-b)<(1e-6);
System.out.println("两数之差绝对值小于最下数的结果:"+bool);
}
}
2.3字符类型
转义字符
例2.5使用转义字符
public class EscapeCharacter {
public static void main(String[] args) {
char c1='\\';//反斜杠转义字符
char c2='\'';//单引号转义字符
char c3='\"';//双引号转义字符
char c4='\u2605';//051 16进制表示的字符
char c5='\101';//8进制表示字符
char c6='\n';//制表符转义字符
char c7='\t';//换行符转义字符
System.out.println("[" + c1 + "]");
System.out.println("[" + c2 + "]");
System.out.println("[" + c3 + "]");
System.out.println("[" + c4 + "]");
System.out.println("[" + c5 + "]");
System.out.println("[" + c6 + "]");
System.out.println("[" + c7 + "]");
}
}
布尔类型
例2.6声明boolean型变量
public class Boolean {
public static void main(String[] args) {
boolean b;//声明布尔型变量
boolean b1,b2;//声明布尔型变量b1.b2
boolean ture = false;声明布尔型变量b1赋给初值ture,b2赋给初值false,
boolean b3=ture, b4=false;
boolean b5= 2<3, b6=(2==4);
System.out.println("b5的结果是:"+b5);
System.out.println("b6的结果是:"+b6);
}
}
2.4数据类型转换
2.4 数据转换类型
类型转换是将一个值从一种类型更改为另一种类型的过程。例如,不仅可以将String类型数据“457”转换为一个数值型,而且可以将任意类型的数据转换为String 类型。
如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的:而把高精度数据类型向低精度数据类型转换则必然会有信息丢失,有可能失败。
数据类型转换有两种方式,即隐式转换与显式转换。
2.4.1 隐式转换
从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换,也可以称为自动转换。下列基本数据类型会涉及数据转换,不包括逻辑类型。这些类型按精度从“低”到“高”排列的顺序为byte<short < int < long < float < double。
例 2.7创建不同数值类型的变量,进行隐式转换。
public class ImplicitConver {
public static void main(String[] args) {
byte mytybe =127;
int myint =150;//声明int型变量myint,并赋值150
float myfloat =452.12f;//声明float型变量myfloat,并赋值
char mychar =10; //声明char型变量mychar,并赋值
double mydouble =45.46546;//声明double型变量并赋值
float mybyte=127;
System.out.println("byte型与float型数据进行运算结果为:"+ (mybyte+myfloat));
System.out.println("byte型与int型数据进行运算结果为:"+ (mybyte*myint));
System.out.println("byte型与char型数据进行运算结果为:"+ (mybyte / mychar));
System.out.println("double型与char型数据进行运算结果为:"+ (mydouble+mychar));
}
}
2.2.4 显式转换
当把高精度的变量赋值给低精度的变量时,必须使用显示类型转换运算(又称强制类型转换),当执行显示类型转换时 可能会导致精度损失。
例 2.8创建不同数值类型进行隐式转换。
public class EqualSign {
public static void main(String[] args) {
int a = (int)45.23;// double类型强制转int类型
long b = (long)456.6F;//float类型强long类型
char c = (char) 97.14;// double 型强制char型
System.out.println("45.23强制转换成int的结果:"+a);
System.out.println("456.6F强制转换成1ong的结果:"+b) ;
System.out.println("97.14强制转换成char的结果"+c);
}
}
2.5运算符
2.5 运算符
运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如赋值运算符、算术运算符和比较运算符等。
2.5.1 赋值运算符
赋值运算符以符号"="表示,它是一个双目运算符 (对两个操作数做处理),其功能是将右边操作数所含的值赋给左边的操作数。
例 2.9 使用赋值运算符为变量赋值,实例代码如下
public class EqualSign1 {
public static void main(String[] args) {
int a,b,c=11;
a=32;
c=b=a+4;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}
例2.10使用算术运算符将变量的计算结果输出
public class Arit {
public static void main(String[] args) {
float num1 = 45.2f;
int num2 = 120;
int num3 = 17, num4=10;
System.out.println("num1+num2的和为:"+(num1+ num2));
System.out.println("num1-num2的差为:"+(num1- num2));
System.out.println("num1*num2的积为:"+(num1*num2));
System.out.println("num1/num2的商为:"+ (num1 / num2));
System.out.println("num3/num4 的余数为:"+(num3 % num4));
}
}
例 2.11 在循环中使用自增运算符,查看自增的效果
public class Auto {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a =1; //创建整型变量a,初始值为1
System.out.println("a="+ a);// 输出此时a的值
a++; // a自增+1
System.out.println("a++="+ a);//输出此时a的值
a++; // a自增+1
System.out.println("a++="+ a);//输出此时a的值
a++; // a自增+1
System.out.println("a++ ="+ a);//输出此时a的值
a--; // a自减-1
System.out.println("a--="+ a);//输出此时a的值
}
}
关系运算符
例 2.12 使用关系运算符对变量进行比较运算。
public class Relat {
public static void main(String[] args) {
int num1 = 4, num2 =7;
int num3 = 7;
System.out.println("num1<num2的结果:"+(num1 < num2));
System.out.println("num1>num2的结果:"+(num1> num2));
System.out.println("num1==num2的结果:"+(num1 == num2));
System.out.println("numl!=num2的结果:"+(num1=num2));
System.out.println("num1<=num2的结果:"+(num1<= num2));
System.out.println("num2>=num3的结果:"+(num2 >= num3)); }
}
2.5.5 逻辑运算符
假定某面包店,在每周二的下午7点至8点和每周六的下午5点至6点,对生日蛋糕商品进行折扣让利活动,那么想参加折扣活动的顾客,就要在时间上满足这样的条件,周二并且7:00PM-8:00PM或者周六并且5:00 PM~6:00PM,这里就用到了逻辑关系。
逻辑运算符是对真和假这两种逻辑值进行运算,运算后的结果仍是一个逻辑值。逻辑运算符包括&&(逻辑与)、Ⅱ(逻辑或)、!(逻辑非)。逻辑运算符计算的值必须是boolean型数据。在逻辑运算符中,除了“!”是单目运算符之外,其他都是双目运算符。Java中的逻辑运算符如表2.7
例2.13使用逻辑运算符和关系运算符对变量进行运算。
public class Logical {
public static void main(String[] args) {
int a=2;声明int型变量a
int b= 5; // 声明int型变量b
//声明boolean型变量,用于保存应用逻辑运算符“&&”后的返回值
boolean result=((a>b) &&(a!=b));
//声明boolean型变量,用于保存应用逻辑运算符“||”后的返回值
boolean result2=((a>b) ||(a!=b));
System.out.println(result); 将变量result输出
System.out.println(result2); 将变量result2输出
}
}
2.5.6位运算符
1. 逻辑运算符
例2.14使用位逻辑运算符进行运算
public class Logical1 {
public static void main(String[] args) {
short x=-123; //创建short变量x, 等于123取反的值
System.out.println("12与8的结果为:"+(12&8)); //位逻辑或计算整数的结果
System.out.println("4或8的结果为:"+(4|8)); //位逻辑或计算整数的结果
System.out.println("31异或22:"+(31^22)); //位逻辑异或计算整数的结果
System.out.println("123取反结果为:"+x); //位逻辑取反结果计算布尔值的结果
System.out.println("2>3与4!=7的与结果:"+(2>3&4!=7));//位逻辑与计算布尔值的结果
System.out.println("2>3与4!=7的或结果:"+(2>3|4!=7));//位逻辑或计算布尔值的结果
System.out.println("2>3与4!=7的与异或结果:"+(2<3^4!=7));
//位逻辑异或计算布尔值的结果
}
}
2、位移运算符
位移运算符有三个,分别是左移<<、右移>>和无符号右移>>>,这三个运算符都是双目的 。
例2.15使用位移运算符对变量进行位移运算
public class Bitwise2 {
public static void main(String[] args) {
int a=24;
System.out.println(a+"右移两位的结果是:"+(a>>2));
int b=-16;
System.out.println(b+"右移两位的结果是:"+(b<<3));
int c=-256;
System.out.println(c+"无符号右移两位的结果是:"+(c>>>2));
}
}
2.5.7 复合赋值运算符
和其他主流编程语言一样 ,Java中也有复合赋值运算符。所谓的合赋值运算符,就是将赋值运算符与其他运算符合并成一个运算符来使用,从而同时实现两种运算符的效果。
例2.16让byte,short两种类型的变量做无符号右移操作
public class Bitwise3 {
public static void main(String[] args) {
byte a=(byte) (-32>>>1);
System.out.println("byte无符号右移的结果:"+a);
short b=(short) (-123>>>4);
System.out.println("short无符号右移的结果:"+b);
}
}
2.5.8 三元运算符
2.5.9 圆括号
圆括号可以提升公式中计算过程的优先级,在编程中常用。
2.5.10 运算符优先级
Java中的表达式就是使用运算符连接起来的符合Java过程的式子。运算符的优先级决定了表达式中运算执行的先后顺序。通常优先级由高到低的顺序依次是增量和减量运算、算数运算、比较运算、逻辑运算、赋值运算。
如果两个运算有相同的优先级,那么左边的表达式要比右边的表达是先被处理 。