Java基础
目录
-
注释、标识符、关键字
-
数据类型
-
类型转换
-
变量、常量
-
运算符
-
包机制、JavaDoc
第一部分
Java中的注释有三种:
-
单行注释
-
多行注释
-
文档注释
(具体使用效果如图所示,注释并不会影响编译效果,同时注释是一个良好的习惯)
关键字
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符
常见的关键字
标识符的注意点
-
所有标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始
-
首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(_)或数学的任何字符组合
-
不能使用关键字作为变量名或者方法名
-
标识符是大小写敏感的
String Man="qwe";
String man="asd"; //两者是不一样的 -
合法标识符举例:age、$salary、_value、__1_value
-
非法标识符举例:123abc、-salary、#abc、@abc
-
可以使用中文命名,但是不建议使用,同样也不建议使用拼音,不易他人理解。
第二部分
数据类型
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义才能使用。
弱类型语言:某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换
Java的数据类型分为两大类
-
基本类型(primitive type)
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
-
byte 数据类型是8位、有符号的,以二进制补码表示的整数;
-
最小值是 -128(-2^7);
-
最大值是 127(2^7-1);
-
默认值是 0;
-
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
-
例子:byte a = 100,byte b = -50。
short:
-
short 数据类型是 16 位、有符号的以二进制补码表示的整数
-
最小值是 -32768(-2^15);
-
最大值是 32767(2^15 - 1);
-
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
-
默认值是 0;
-
例子:short s = 1000,short r = -20000。
int:
-
int 数据类型是32位、有符号的以二进制补码表示的整数;
-
最小值是 -2,147,483,648(-2^31);
-
最大值是 2,147,483,647(2^31 - 1);
-
一般地整型变量默认为 int 类型;
-
默认值是 0 ;
-
例子:int a = 100000, int b = -200000。
long:
-
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
-
最小值是 -9,223,372,036,854,775,808(-2^63);
-
最大值是 9,223,372,036,854,775,807(2^63 -1);
-
这种类型主要使用在需要比较大整数的系统上;
-
默认值是 0L;
-
例子: long a = 100000L,Long b = -200000L。 "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
float:
-
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
-
float 在储存大型浮点数组的时候可节省内存空间;
-
默认值是 0.0f;
-
浮点数不能用来表示精确的值,如货币;
-
例子:float f1 = 234.5f。
-
float类型要在数字后面加个F
double:
-
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
-
浮点数的默认类型为 double 类型;
-
double类型同样不能表示精确的值,如货币;
-
默认值是 0.0d;
boolean:
-
boolean数据类型表示一位的信息;
-
只有两个取值:true 和 false;
-
这种类型只作为一种标志来记录 true/false 情况;
-
默认值是 false;
-
例子:boolean flag = true。
char:
-
char 类型是一个单一的 16 位 Unicode 字符;
-
最小值是 \u0000(十进制等效值为 0);
-
最大值是 \uffff(即为 65535);
-
char 数据类型可以储存任何字符;
-
例子:char letter = 'A';。
-
-
引用类型(reference type)
引用数据类型在内存中存放的是指向该数据的地址,不是数据值本身,它往往由多个基本数据类型组成,因此,对引用数据类型的应用称为对象引用,引用数据类型也被称为复合数据类型,在有的程序设计语言中称为指针。
-
类、接口、数组都是引用数据类型
-
所有引用类型的默认值都是null。
-
扩展
Java语言定义了4类共8种基本类型,其中4种整型、2种浮点型、1种布尔型和1种字符型,它们的分类及关键字如下。
-
整型:byte、short、int、long、
-
浮点型:float、double
-
布尔型:boolean
-
字符型:char
-
整型
Java语言的整数有三种进制的表示形式。
-
十进制:用0~9的数字表示,如123和-100,其首位不能为0.
-
八进制:以0开头,后跟多个0~7的数字0123.
-
十六进制:以0x或0X开头,后跟多个0~9的数字或a~f的小写字母或A~F的大写字母,a~f或A~F均表示值10~15,如0X123E。
-
第三部分
类型转换
由于数值型分为不同的类型,所以数值型数据有类型转换问题。数值型数据的类型转换分为自动类型转换和强制类型转换两种。
-
自动类型转换
在程序中已经定义好的数值型的变量,若是想以另一种数值类型表示时,Java语言会在下列条件同时成立时,自动进行数据类型转换。
-
转换前的数据类型与转换后的类型兼容。
-
转换后数据类型的表示范围比转换前数据类型的表示范围大。
-
上述不同类型的数据进行运算时,需先转换为同一类型,然后进行运算。转换从“低”到“高”的优先关系为:
-
-
-
强制类型转换
如果要将较长的数据转换成较短的数据时,就要进行强制类型转换。强制类型转换的格式如下:
(欲转换的数据类型)变量名
int i=128;
byte b = (byte)i;//会产生溢出,故在为保证运算的正确性,应认识数据类型字节范围特殊例题认识:
第四部分
变量
-
变量是什么: 可以变化的量,变量的值在程序运行中是可以改变的。
-
Java是一种强类型语言,每个变量都必须声明其类型。(使用变量的原则是“先声明后使用”,即变量在使用前必须先声明。)
-
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 [=初值][,变量名[=初值]······];; 可以使用逗号隔开来声明多个同型变量。
变量的作用域
-
类变量
-
实例变量
-
局部变量
public class Demo4 {
//类变量 static
static double salary = 3.1415926;
//实例变量:出属于对象;如果不自行初始化,即显示这个类型的默认值,除了基本类型,其余的默认值为null;
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值(在方法中)
int i=10;
System.out.println(i);
//变量类型 变量名字 = new Demo4();
Demo4 demo4=new Demo4();
System.out.println(demo4.age);
System.out.println(demo4.name);
//类变量 static
System.out.println(salary);
}
}
常量
-
常量表示在程序中不能被修改的固定值。
-
Java语言中的常量也是有类型的,包括整型、浮点型、布尔型、字符型、和字符串型。
-
常量声明的形式与变量的声明形式基本一致,只需用关键字final标识,通常final写在最前面。例如;
final int MAX = 10 ;
final float PI = 3.14f;
第五部分
运算符
算术运算
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21(区别:先进行自增或者自减运算,再进行表达式运算。) |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19(区别: 先进行表达式运算,再进行自增或者自减运算。) |
关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100 //0-1、0-0、1-0为0,1-1为1;
A | B = 0011 1101 //0-0为0,0-1、1-1、1-0为1
A ^ B = 0011 0001 //0-0、1-1为0,0-1,1-0为1
~A= 1100 0011 //0变1、1变0
逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真 |
短路逻辑运算符
当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
赋值运算符
下面是Java语言支持的赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
条件运算符(?:)
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
int a = 1,b = 2,max;
max = a > b ? a : b; //max获得a,b之中的较大值
System.out.println("max="+max); //输出结果为max=2
Java运算符优先级
当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。
再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr-- | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
第六部分
包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
-
包语句的语法格式:
package pkg1[.pkg2[.pkg3···]];
-
一般利用公司域名倒置作为包名;
-
为了能够使用某一个包的成员,我们需要在java程序中明确导入该包。使用“import”语句可完成此功能
import package[.package1···].(classname|*);
javaDoc文档
-
JavaDoc命令是用来生成自己API文档的
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
-
-
通过命令行 javadoc 参数 java文件
-
例:
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
-