一、Java主类结构
1、Java程序的基本组成是类,类包括属性和方法两部分。每一个应用程序必须包含一个main()方法,包含main()方法的类称为主类。
2、一个Java应用程序由若干类组成,package(包)是声明该类所在的包。
3、Java语言中可以通过Import关键字导入相关的类为我们所用。
二、基本数据类型
1、整数类型
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
byte | 8位 | -128~127 |
short | 16位 | -32768~32767 |
int | 32位 | -2147483648~2147483647 |
long | 64位 | -9223372036854775808~-9223372036854775807 |
定义方法:(1)、int x;(2)、int x,y;(3)、int x = 450,y = -462;
定义时赋值需要注意取值范围,超出会出错。
对于long型值,若赋给的值大于int的最大值或者最小值,需要在数字后面加L或l,表示该数值为长整数,如 long num = 2147483648L。
2、浮点类型
(1)、单精度浮点类型float,内存空间为32位,取值范围1.4E~3.4028235E38
(2)、双精度浮点类型double,内存空间位64位,取值范围4.9E~1.7976931348623157E308
(3)、默认情况下,小数都被看作double型,因此使用float形小数应该在小数后面加F或f,不然报错
3、字符类型
(1)、char型
char型用于存储单个字符,占用16位的内存空间,定义字符变量时要用单引号表示,如char 's';
Java使用unicode编码,可以存储65536个字符,同样可把字符作为整数对待
如 char x = 'a';
和char x = 97;是一样的
(2)、转义字符
转义字符是一种特殊的字符变量,它以反斜杠"\"开头,后面跟一个或多个字母,具有特定的含义
转义字符 | 含义 |
\ddd | 1-3位八进制数据所表示的字符,如\123 |
\uxxxx | 4位十六进制数据所表示的字符,如\u0052 |
\' | 单引号字符 |
\\ | 反斜杠字符 |
\t | 垂直制表符,将光标移到下一个制表符的位置 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\f | 换页 |
例: char c1 = '\\';
4、布尔类型
布尔类型又称逻辑类型,通过关键字boolean来定义布尔类型变量,只有true和false两个值,分别代表真和假
boolean b = true;
三、变量与常量
1.标识符
标识符即用来标识类名、变量名、方法名、数组名、文件名的有效字符序列
Java语言规定标识符可以以任意顺序的字母、下划线_、美元符号$和数字组成,但是第一个字符不能为数字,值得一提的是,由于采用unicode编码,汉字或者日语也属于字母的范畴。
2、关键字
关键字是Java语言中已经被赋予特定意义的一些单词
int public this finally boolean abstract continue float long short throw throws return break for static new interface if goto default byte do case strictfp package super void try switch else catch implements private final class extends volatile while synchronized instanceof char protected import transient dafault double。
3、声明变量
例
int age;
char c1 = 'r';
系统的内存分为系统(OS)区,程序(Program)区和数据(Date)区。程序执行时,程序代码会加载到内存中的程序区,数据暂时存到数据区中,执行此行程序代码时,会在数据区配置空间给出这两个变量
4、声明常量
也被成为“final变量”,当定义的final变量属于“成员变量”时,必须在定义时就设定它的初值,否则会报错。
5、变量的有效范围
(1)成员变量
在类体中所定义的变量被称为成员变量,在整个类中都有效。类的成员变量又可以分为两种,即静态变量和实例变量。
静态变量
static int x = 90;有效范围可以跨类
实例变量
int y = 45;只能在类中使用
(2)、局部变量
在类的方法中声明的变量,包括方法的参数,只能在方法中调用
四、运算符
(1)、赋值运算符
即“=”,注意:一个表达式中若含有两个以上的“=”运算符,会从最右边的的“=”开始处理。
例如
int a,b,c;
a = 15;
c = b = a+4;
这里先将a与4的和赋值给变量b,然后再赋值给变量c。
(2)、算术运算符
+、-、*、/、%
(3)、自增和自减运算符
++a 表示在使用变量a之前,先使a的值加1
a++表示在使用变量a之后,使a的值加1
b = ++a; 先将a的值加1,然后赋给b,此时a值为5,b值为5
b = a++;先将a赋给b,再将a的值加1,此时a = 5,b = 4
(4)、比较运算符
(5)、逻辑运算符
&&与&都表示“逻辑与”,使用&会判断两个表达式,而&&则是针对boolean类型的类进行判断,当第一个表达式为false时则不会去判断第二个表达式,直接输出结果从而节省计算机判断的次数。通常将这种在逻辑表达式中从左端的表达式可以推断出整个表达式的值成为“短路”,而那些始终执行逻辑运算符两边的表达式称为“非短路”。&&属于短路运算符,&属于非短路运算符。
(6)、位运算符
1、“按位与”运算的运算符位“&”,为双目运算符。法则是:如果两个整形数据a,b对应位都是1,则结果位才是1,否则为0,两个精度不同的操作数按照结果精度高的操作数来
5&4095的结果
0000 0000 0101
1111 1111 1111结果为
0000 0000 0101
2、“按位或”运算的运算符位“|”,为双目运算符。“按位或”运算的运算法则是如果两个操作数对应位都是0,则结果位才是0,否则为1.
3、“按位取反”运算也称“按位非”运算,运算符位“~”,为单目运算符。“按位取反”就是将操作数二进制中的1修改为0,0修改为1
~15的结果
0000 0000 0000 1111
结果为
1111 1111 1111 0000
4、“按位异或”运算的运算符是“^”,为双目运算符,法则是,当两个操作数的二进制表示相同,结果为0,否则为1
0000 0000 1111 1010
0000 0000 1111 0011 结果为
0000 0000 0000 1001
5、移位操作
<<:左移
>>:右移
>>>:无符号右移
左移就是将运算符左边的操作数的二进制数据按照运算符右边的操作数指定的位数向左移动,右边移空的部分补0.右移则复杂一些。当使用>>符号时,如果最高位是0,右移空的就填入0;如果最高位是1,右移空的位就填入1
Java还提供了无符号右移>>>,无论最高位时0还是1,左侧被移空的高位都填入0
移位可以实现整数除以或乘以2^n的效果。一个数左移n位,就是将这个数乘以2^n了一个数右移n位,就是将这个数,就是将这个数除以2^n。
(7)、三元运算符
使用格式为:
条件符?值1:值2
三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值2
8、运算符的优先级
按顺序依次是:
增量和减量运算
算术运算
比较运算
逻辑运算
赋值运算
如果两个运算符有相同的优先级,那么左边的表达式要比右边的表达式先被处理
优先级 | 运算符 |
1 | () |
2 | +,- |
3 | ++,--,! |
4 | *,/,% |
5 | +,- |
6 | >>,>>>,<< |
7 | <,>,>=,<= |
8 | ==,!= |
9 | & |
10 | ^ |
11 | | |
12 | && |
13 | || |
14: | ?: |
15 | = |
五、数据类型转换
(1)、隐式类型转换
从低级类型向高级类型转换,系统将自动执行,程序员无须进行任何操作,这种类型的转换称为隐式转换。按精度从低到高顺序为byte<short<int<long<float<double
(2)、显示类型转换
例子:
int a = (int)45.23;
六、注释
//
/*
*
*/
七、实践与练习
1、编写Java程序将两个数相加的结果输出
public class No1 {
static int a = 4;
static int b = 5;
public static void main(String[] args) {
System.out.println((a+b));
}
}
2、编写Java程序,声明成员变量age与局部变量name。比较一下两个变量的区别,并添加相应注释
public class No2 {
static int age;
public static void main(String[] args) {
String name;
}
}
3、编写Java程序,将所有整型数值全部转换成int型,并将转换后的值输出
public class No3 {
public static void main(String[] args) {
byte a = 123;
short b = 124;
long c = 125;
int d1 = (int)a;
int d2 = (int)b;
int d3 = (int)c;
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
}
}