1.Java开发工具
-
IntelliJ IDEA被认为是目前Java开 发效率最快的IDE工具。是 JetBrains公司的产品,这家公司 总部位于捷克共和国的首都布拉格。 它整合了开发过程中实用的众多功 能,智能提示错误,强大的调试工 具,Ant,JavaEE支持,CVS整合, 最大程度的加快开发的速度。简单 而又功能强大。与其他的一些繁冗 而复杂的IDE工具有鲜明的对比。
Intellij IDEA
2. 标识符
2.1 标识符定义(Identifier)
-
在编程语言中,标志符就是程序员自己规定的具有特定含义的词,比如类名称、方法名称、属性名称、变量名等。
2.2 命名规则
-
标识符由字母(包括中文)、数字、下划线
_
和美元符号$
组成 -
不能以数字开头
-
不能是关键字和保留字,但是可以包含关键字和保留字
-
Java严格区分大小写
-
标识符可以为任意长度,但标识符不能包含空格
-
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
-
注意:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。
2.3 常用规范
-
包名:全部小写,用
.
隔开,每一个点表示一级目录,至少要有一级目录。-
单级包:小写。如:
com
-
多级包:小写,用
.
隔开。如:com.codingfuture
-
-
类或接口:所有单词首字母大写。(大驼峰法)
-
一个单词:首字母大写。如:
Student
、People
-
多个单词:每个单词首字母大写。如:
HelloWorld
、ServerSocket
-
-
方法或变量:第一个单词首字母小写,从第二个单词开始首字母大写。(小驼峰法)
-
一个单词:首字母小写。如:
name
、age
-
多个单词:第二个单词首字母大写。如:
stuName
、showTime
-
-
常量:全部大写,单词间以下划线
_
隔开.-
一个单词:全大写。如:
PI
、COUNT
-
多个单词:全大写,并以
_
隔开。如:RESULT_OK
、WINDOW_HIERARCHY_TAG
-
*详细规范见《阿里巴巴Java开发手册》第一章
2.4 关键字和保留字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
3. 常量与变量
3.1 常量
-
在程序运行过程中,其值不可以发生改变的量,称为常量。
-
常量(字面量)分类:
-
字符串常量:用双引号括起来的内容。
"Hello, World!"
、"码上未来"
-
整数常量:不带小数的数字。
666
、-88
-
小数常量:带小数的数字。
13.14
、-5.21
-
字符常量:用单引号括起来的内容。
'A'
、'o'
、'我'
-
布尔常量:布尔值,表示真假。
true
、false
-
空常量:一个特殊的值,空值。
null
-
不可修改的变量:用
final
关键字修饰的变量,只能赋值一次,不可修改。final int A = 1;
-
3.2 变量
-
在程序运行过程中,其值可以发生改变的量,称为变量。
-
Java中定义变量的格式是 数据类型 变量 = 值
-
va r 变量 = 10 js. 动态语言
-
先声明,后赋值
-
int a; // 声明 a = 1; // 赋值
声明时赋值
-
int a = 1; // 声明时赋值
对变量值进行修改
-
int a = 1; // 初始化变量 a = 2; // 修改变量值
4. 数据类型
4.1 计算机存储单元
-
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位“ ,通常用小写的字母"b"表示。
-
而计算机中最小的存储单元叫”字节(byte)“,通常用大写字母"B"表示,字节是由连续的8个位组成。
-
除了字节外还有一些常用的存储单位:
-
1B (字节) = 8bit
-
1KB = 1024B
-
1MB = 1024KB
-
1GB = 1024MB
-
1TB = 1024GB
-
1PB = 1024TB
4.2 数据类型
-
Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。
-
基本数据类型:(primitive type)
名称 | 数据类型 | 数据类型位数 | 默认值 | 最小值 | 最大值 |
---|---|---|---|---|---|
字节型 | byte | 1字节(8位) | 0 | -2^7. -128 | 2^7-1. 127 |
短整型 | short | 2字节(16位) | 0 | -2^15 | 2^15-1 |
整型(默认) | int | 4字节(32位) | 0 | -2^31 | 2^31-1(约21亿) |
长整型 | long | 8字节(64位) | 0L | -2^63 | 2^63-1 |
单精度浮点型 | float | 4字节(32位) | 0.0f | -3.403E38 | 3.403E38 |
双精度浮点型(默认) | double | 8字节(64位) | 0.0d | -1.798E308 | 1.798E308 |
字符型 | char | 2字节(16位) | 'u0000' | 0 | 2^16-1 |
布尔型 | boolean | 未知 | false |
-
引用数据类型:(reference type)
类:class (字符串放在这里)
接口:interface
数组:array []
4.3数据类型特殊说明
-
整数类型:byte、short、int、long
java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保 证java程序的可移植性。
java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
-
byte a = 127; short b = 128; int c = 1000; long d = 1000l;
-
浮点类型:float、double
与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。
浮点型常量有两种表示形式
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double:双精度,精度是float的两倍。通常采用此类型。
Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
-
float f = 123f; double d = 123.456d; System.out.println(f); System.out.println(d);
-
字符类型:char
char 型数据用来表示通常意义上“字符”(2字节)
Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他的一个字符。
字符型变量的三种表现形式:
字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。 例如:char c3 = ‘\n’;
直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中XXXX代表 一个十六进制整数。如:\u0043 表示 c
char类型是可以进行运算的。因为它都对应有Unicode码。
-
char c1 = '张'; char c2 = '0'; char c3 = '\n'; char c4 = '\u0043'; System.out.println(c4);
-
布尔类型:boolean
boolean 类型用来判断逻辑条件,一般用于程序流程控制:
boolean类型数据只允许取值true和false,无null。
不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的 boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false 用0表示。
-
boolean yes = true; boolean no = false;
4.4 数据类型转换
-
自动类型转换 ==>容量小的类型自动转换为容量大的数据类型。
-
如果一个操作数为double型,则整个表达式可提升为double型。
-
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的 那种数据类型,再进行计算。
byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
boolean类型不能与其它数据类型运算。
-
int a = 100; long b = 200; b = a + b; System.out.println(b); 计算下列结果? int a = 123; double d = a + 123; System.out.println(d); int b = a /300; System.out.println(b);
强制类型转换
-
条件:转换的数据类型必须是兼容的
-
格式:(数据类型) 变量 , (数据类型) 是强制类型转换后的数据类型。例:
-
double d = 123.456d; System.out.println(d); int i = d;// 编译不通过 int i = (int) d;// 截断操作 System.out.println(i);;
编码情况1: long l1 = 123; // ok long l1 = 1234567890123456789; // 编译不通过 System.out.println(l1); float f1 = 12.3; // 编译不通过 // float f1 =(float) 12.3; 编码情况2: 整型常量,默认类型为int型 浮点型常量,默认类型为double类型 byte b = 12; byte b1 = b + 1;// 编译不通过 float f1 = b + 12.3;// 编译不通过 // byte b1 = (byte) (b + 1); // float f1 = (float) (b + 12.3);
-
4.5 作用域
-
变量起作用的范围,称为作用域。
-
范围:变量在哪对大括号中声明定义的,范围就是哪对大括号。
-
在同一个作用域中,不能定义重复的变量。
-
5. 运算符
5.1 算数运算符
-
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
-
表格中的实例假设整数变量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 |
-
自增自减运算符
-
基本使用
-
int a = 5; a++; System.out.println(a); // 此时a的值为6 a--; System.out.println(a); // 此时a的值为5
a++
和++a
的区别 -
int a = 5; int b = a++; System.out.println(a); // 6 System.out.println(b); // 5 int c = 5; int d = ++c; System.out.println(c); // 6 System.out.println(d); // 6
-
a++
先赋值后自增 -
++a
先自增后赋值
-
5.2 关系运算符
-
下表为Java支持的关系运算符
-
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B)为真 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A > B)为假 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A < B)为真 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A >= B)为假 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真 |
5.3 逻辑运算符
-
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假 |
|| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A || B)为真 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真 |
1.逻辑异或:相同为false,不同为true
2.&”和“&&”的区别
单&时,左边无论真假,右边都进行运算
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
5.4 赋值运算符
-
下面是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 |
5.5 位运算符 (了解)
-
下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是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 |
-
位运算是直接对整数的二进制进行的运算。
-
public static void main(String[] args) { int a = 60; // 0011 1100 int b = 13; // 0000 1101 System.out.println(a&b); // 0000 1100 System.out.println(a|b); // 0011 1101 } public class JavaDemo { public static void main(String[] args) { /*1.位运算符操作的都是整型的数据 2.<<在一定范围内,每向左移一位,相当于*2 >>在一定范围内,每向左移一位,相当于/2 */ int i = 21; System.out.println("i<<2=" + (i << 2)); System.out.println("i<<3=" + (i << 3)); System.out.println("i<<27=" + (i << 27)); System.out.println("i>>2=" + (i >> 2)); } }
-
java中的进制声明
-
public static void main(String[] args) { int a = 0b11; //声明二进制变量 int b = 011; //声明八进制变量 int c = 11; //声明十进制变量 int d = 0xaabb; //声明十六进制变量 System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); }
5.6 其他运算符
-
条件运算符(?:)
条件运算符也被称为三元运算符。
该运算符有3个操作数,并且需要判断布尔表达式的值。
该运算符的作用是决定哪个值应该赋值给变量。
-
int a = 10; int b = a > 10 ? 10 : 0; class calc { public static void main(String[] arg) { int a = 10; int b = 20; int c = 30; int result = (a > b ? a : b) > c ? (a > b ? a : b) : c; System.out.println(result); } }
instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类型或接口类型)。
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
-
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真 -
如果被比较的对象兼容于右侧类型,该运算符仍然返回true。
-
字符串类型:String
String不是基本数据类型,属于引用数据类型
使用方式与基本数据类型一致。例如:String str = “abcd”;
一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。
5.7 运算符优先级
-
算术运算符 > 关系运算符 > 逻辑运算符
-
复杂的运算需要用小括号
()
来强制控制运算顺序,可读性强