1、Java主类结构
Java程序的基本组成单元是类,类中包含属性和方法。每一个应用程序都必须包含一个main()方法,有main()方法的类是主类。
1.1 包声明
一个Java应用程序由多个类组成,将类或者其他文件归类的文件就是包。
1.2 声明成员变量和局部变量
成员变量(全局变量):类中的属性,声明在类体中。
局部变量:方法中的属性,声明在方法体中。
1.3 编写主方法
public static void main(String args[]):
public:权限修饰符
static:静态修饰符
void:返回值修饰符
String args[]:字符串类型的数组,是main方法中的参数
2、基本数据类型
2.1 整数类型
存储整数数值,即没有小数部分的数值。可以是正数也可以是负数。整数在Java中有3中表现形式:十进制、八进制、十六进制。
十进制:除了0,不能以0作为其他十进制数的开头
八进制:0123(十进制:83):必须以0开头
十六进制:0X25(转换成十进制:83) :必须以0X或者0x开头
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
byte | 8位 | -128~127 |
short | 16位 | -32768~32767 |
int | 32位 | -2147483648-2147483647 |
long | 64位 | -9223372036854775808~9223372036854775807 |
2.2 浮点类型
有小数部分的数字,Java语言分为单精度浮点型和双精度浮点型。
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
float | 32位 | 1.4E-45~3.4028235E38 |
double | 64位 | 4.9E-324~1.7976931348623157E308 |
默认情况下,小数会被看做double型,若使用float型小数,则需要在小数后面加F或者f。
2.3 字符类型
**char型:**存储单个字符,占16位(2个字节)的内存空间,定义时,用单引号表示。
转义字符:一种特殊的字符变量,以反斜杠“\”开头,转义字符如下表:
转义字符 | 含义 |
---|---|
\ddd | 1~3位八进制数据所表示的字符 |
\uxxxx | 4位十六进制数据所表示的字符 |
\’ | 单引号字符 |
\\ | 反斜杠字符 |
\t | 垂直制表符,将光标移动到下一个制表符的位置(空格) |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\f | 换页 |
2.4 布尔类型
又称逻辑类型,通过boolean来定义布尔类型,只有true和false两个值。
3、变量与常量
常量:程序执行过程中,其值不能被改变的量(用final修饰,通常使用大写字母<非必须>,只能进行一次赋值)
变量:程序执行过程中,其值可以被改变的量
3.1 标识符和关键字
标识符:
定义:用来标识类名、变量名、方法名、数组名、文件名的有效字符序列,就是一个名字。
命名规则:由字母、数字、下划线(_)、美元符合($)组成,但是不能以数字开头。
**关键字:**Java语言已经被赋予了特定意义的单词,不可作为标识符。
3.2 声明变量
告诉编译器这个变量的数据类型,这样编译器才知道分配多少内存空间,应该保存什么类型的数据。
变量命名规则:
- 必须是一个有效的标识符
- 不可以使用Java关键字
- 不能重复
- 应选择有意义的单词(定义变量时,变量名允许使用汉字或其他语言,程序执行也不会报错,但是不建议使用这些语言命名)
3.3 声明常量
当定义的final属性属于成员变量时,必须在定义时就设定它的初值,否则会报错
public class Part{
static final double PI = 3.14;//定义的属性属于成员变量,所以必须在定义时就赋初值
public static void main(String args[]){
final int number;//声明int型的常量
number = 1019;//对常量number进行赋值
//number = 520; 不可以,因为常量只能进行一次赋值
}
}
3.4 变量的有效范围
**成员变量的有效范围(作用域):**整个类都有效,又可分为实例变量和静态变量
class a{
int x = 10;//实例变量
static int y = 19;//静态变量:被static修饰,可以实现跨类使用(范围可达到整个应用程序),通过“类名.静态变量”在其他类中获取(获取)
}
**局部变量:**类的方法中定义的变量,只在当前代码块(方法体中)有效。当方法被调用的时候,Java虚拟机会为此变量内存空间,方法调用结束后,会释放局部变量。局部变量可以和成员变量的名字相同,局部变量的值会覆盖成员变量的值。
4、运算符
4.1 赋值运算符
“=”表示,是一个二元运算符(对两个操作数进行处理)。将右边操作数的值赋给左边,如果有多个=,则先执行右边的。
4.2 算数运算符
加(+)、减(-)、乘(*)、除(/)、求余(%)
4.3 自增、自减运算符
单目运算符,可以放在操作元之前,也可以放在操作元之后。
++a(--a) //先将a的值进行加一或者减一操作,再将a的值进行下一步操作
a++(a--) //先将a的值进行操作,再将其进行加一或者减一操作
4.4 比较运算符
二元运算符,结果为布尔类型,比较运算符如下表:
运算符 | 操作数据类型 |
---|---|
> | 整型、浮点型、字符型 |
< | 整型、浮点型、字符型 |
== | 基本数据类型、引用型 |
>= | 整型、浮点型、字符型 |
<= | 整型、浮点型、字符型 |
!= | 基本数据类型、引用型 |
4.5 逻辑运算符
返回的类型为布尔值的表达式,逻辑运算符的用法和含义如下表:
运算符 | 含义 | 用法 | 结合方向 |
---|---|---|---|
&&、& | 逻辑与(一假为假) | a&&b | 从左到右 |
|| | 逻辑或(一真为真) | a||b | 从左到右 |
! | 逻辑非 | !a | 从右到左 |
&&与&的区别:都表示逻辑与
&:会判断两边的表达式
&&:当左边的表达式为false,则不会判断右边的表达式(成为“短路”);同理,||:当左边的表达式为真,则不会去判断右边的表达式。
4.6 位运算符
处理整数的操作数(二进制数),左边最高位为符号位,0表示正数,1表示负数
-
按位与(&):双目运算符,运算时,a,b两个数对应位都为1,则结果为1;否则为0
-
按位或(|):双目运算符,运算时,a,b两个数对应为都为0,则结果为0;否则为1
-
按位取反(按位非):单目运算符,运算符为~,运算时,就是将一个二进制数的0变成1,1变成0
-
按位异或,双目运算符,运算符为^,运算时,a,b两个数对应位置相同(都为0或1时),结果为0,否则为1
-
移位操作:(最高的那个符号位不参与移位),如下表
运算符 描述 功能(作用) 左移(<<) 除符号位外,右边的所有数向左移动n位,右边移空的部分补0 实现乘以2的n次方效果 右移(>>) 最高位为0,右移空的位补0;最高位为1,右移空的位补1 实现除以2的n次方效果 无符号右移(>>) 无论最高位为0还是1,左侧被移空的部分都补0
4.7 三元运算符
使用格式:条件式?a:b
运算规则:若条件式的值为真则取a的值,若为假则取b的值
等价于if……else语句
4.8 运算符的优先级
由高到低:增量或增减运算符;算术运算符;比较运算符;逻辑运算符;赋值运算符
在写程序时,尽量使用空号来限定运算次序。
5、数据类型转换
5.1 隐式类型转换
由低级类型向高级类型转换,系统自动转换。类型按精读从高到低排序:byte<short<int<long<float<double
int x = 50;
float y = x; //y的值为50.0
5.2 显式类型转换(强制类型转换)
将高精度的变量赋值给低精度的变量,需要进行强制转换。
int a = (int)10.19 //输出a的值为10
long b= (long)123.4F //输出b额值为123
int c = (int)'d' //输出c的值为100
6、代码注释规范
写代码时要多写注释来提高代码的可读性和可维护性。
//此处为单行注释内容,用“//”标记
/*
此处为多行注释内容
*/
/**
此处为文档注释
*/