Java语言基础(Java自我进阶笔记二)
一、 什么是Java 的主类结构?
1.
每一个应用程序都必须包含一个main()方法,还有main()方法的类称之为主类
2 案例
package a; //包声明
import java.io.*;//导入库
public class First {
static String s1="你好";//成员变量
public static void main(String[] args)//主类方法
{
String s2="java";//局部变量
System.out.println(s1);
System.out.println(s2);
}
}
其中a 是类First所在的包,s1是成员变量,s2是局部变量,main()是主类方法
3 结构说明
3.1 包声明
3.2 导入API类库
3.3 声明成员变量和全局变量
通常将类的属性称为类的全局变量(在类体中声明),将方法中的属性称之为局部变量(在方法中声明)
3.4 编写主方法
main()方法是类体中的主方法。由{}确定边界。public、static和void分别是main()方法的权限修饰符、静态修饰符、返回值修饰符。main()方法必须这样声明。String [] args是一个字符串类型的数组,是main()方法的参数。main()方法是程序开始执行的地方。(main()方法的大致格式是一定的)
二、 基本数据类型
1. 结构
2 数值型
2.1 整数类型
整型数据有三种表示方式,分别是十进制、八进制和十六进制
十进制 比如 120、0、-127在我们生活中使用最多的便是10进制
八进制 比如 0123(转化为十进制是83)、-0123(转化为十进制是-83)
十六进制 比如0x25(转化为十进制是37)注意:十六进制必须以0X或0x开头
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
byte | 8位 | -128~127 |
short | 16位 | -2^15 ~2^15-1 |
int | 32位 | -2^31~ 2^31-1 |
long | 64位 | -2^63~ 2^63-1 |
定义上述4种类型变量时,要注意变量的取值范围,超出范围就会报错。对于long型值,若范围超过int型的范围,需要在数字后加L或l,表示该数值为长整数,如
long num=21344333445343434L
2.2 浮点类型
浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),分别具有不同的取值范围.
在默认情况下,小数一般被默认为double型,若使用float型小数,需要在小数后面加F或f
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
float | 32位 | 1.4E-324~3.4028235E38 |
double | 64位 | 4.9E-324~1.7976931348623157E308 |
根据表格可以看出,相比而言,double类型的范围更大一些。
3 字符类型
3.1 char类型
字符类型(char)用于储存单个字符,占用16位也就是2个字节的内存空间。
如
char x='a';
由于a在unicode表中是97,所以上面的语句也可以写成
char x=97;
3.2 转义字符
转义字符 | 含义 |
---|---|
\ddd | 八进制数据所表示的字符 |
\uxxxx | 4位十六进制数所表示的字符 |
\’ | 单引号字符 |
\\ | 反斜杠字符 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\f | 换页 |
4 布尔类型
布尔类型又称之为逻辑类型,用关键词boolean来定义布尔类型变量,只有true和false两个值。布尔类型不能和整数类型转换。(和C有不同)。
三 变量与常量
值可以改变的量称为常量,不能被改变的量称为变量。变量和常量的命名需要合法的标识符。
1 标识符
标识符用于标识类名、变量名、方法名、数组名、文件名。它是一个有效字符序列。
标识符由任意顺序的字母、下划线(_)、美元符号($)和数字构成并且首个字符不能是数字。标识符不能是关键字。
比如 :
name
use_age
$page
非法标识符:
4word(数字开头)
String(关键字)
User name(含有空格)
2 关键字
Java语言中被赋予特殊含义的字符串被称为关键字。
int | public | this | finally | boolean | abstract |
---|---|---|---|---|---|
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 | default | double |
3 变量声明
变量命名规则
变量名必须是一个有效的标识符
变量名不可以使用Java语言中的关键字
变量名不能重复
应该选择有意义的单词作为变量名
Java语言中允许汉字或者其他语言作为变量名,但是还是尽量避免使用。
int 年龄=21;
这并不会报错
4 常量声明
在程序运行过程中一直不会改变的量称为常量,通常也被称为“final变量”
在定义时必须赋予初值,否则会报错。
定义的标准语法如下
final 数据类型 常量名称[=值]
比如注意变量名由于编写规范通常字母大写
final double PI=3.1415926D;
5变量的有效范围
变量有着自己的生命周期,变量的有效范围是指程序代码能够访问该变量的区域。在程序中根据变量的有效范围将变量分为成员变量和局部变量。
5.1 成员变量
在类体中被定义的变量称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为静态变量和实例变量
声明静态变量和实例变量
class var
{
int x=45;
static int y=-90;
}
x为实例变量,y为静态变量,根据标识符static区分。
静态变量的有效范围可以跨类,甚至可达整个应用程序之内。静态变量除了在定义它的类中存取,还可以通过类名.静态变量的方式在其他类中使用。
5.2 局部变量
在类的方法体中定义的变量称为局部变量,只在定义的方法中有效。当成员变量和局部变量的名字相同时,在局部变量的有效区域内,成员变量暂时失效。
如
public class Val{
static int times=3;
public static void main(String args[])
{
int times=4;
System.out.println("times 的值为:"+times);
}
}
四 运算符
(1)运算符的类型
1赋值运算符
赋值运算符以符号“=”表示,是一个二元运算符将右边的值赋给左边
2算术运算符
+-*/%,分别代表加减乘除取余
3自增和自减运算符
自增自减运算符是单目运算符,作用都是使变量的值加一或减一
但是和变量的相对位置不同,过程也不同
a的初始值 | 运算 | a的最终值 | b的最终值 | 说明 |
---|---|---|---|---|
4 | b=a++ | 5 | 4 | 先把a的值赋给b,再将a的值加一,此时a为5,b为4 |
4 | b=++a | 5 | 5 | 先将a的值加一,再把a的值赋给b,此时a为5,b为5 |
4 | b=a- - | 3 | 4 | 先将a的值赋给b,再把a的值减一,此时a为3,b为4 |
4 | b=- -a | 3 | 3 | 先将a的值减1,再把a的值赋给b,此时a为3,b为3 |
对于自增和自减运算符而言,运算符在前,则先进行运算符的含义
(也就是加一或减一)在进行赋值。运算符在后,则变量名称在前,
先进行赋值,再进行加一或减一
4 比较运算符
>,<,=不作说明,懂的都懂。
==表示判断左右两边是否相等
>=表示判断左边是否大于等于右边
<=表示判断左边是否小于等于右边
!=表示判断是否左边不等于右边
最后比较的结果为true或者false
5 逻辑运算符
运算符 含义 结合方向
&&,& 逻辑与 从左到右
|| 逻辑或 从左到右
! 逻辑非 从右到左
6 位运算符
按位与(&)
对应位进行逻辑与操作
按位或(|)
对应位进行逻辑或操作
按位取反(~)
每一位进行取反操作
按位异或(^)
对应位进行异或操作
移位操作(>>,<<,>>>)
>>表示左移,<<表示右移,>>>表示无符号位右移
"<<"表示左移,即按照右边操作数指定的位数向左移动,右边移空的位置填0;
“>>”表示右移,如果最高位(也就是符号位是0),右移空的位置 补0;如果最高位是1(也就是符号位是1),右移空的位置填1;
“>>>”表示无符号位右移,无论最高位是0还是1,左边移空的位置都填0;
7 三元运算符
条件式?值1:值2
如果条件式运算为真,则表达式取1,否则取2
例如
boolean b=20<45?true:false
20<45为假,所以表达式取2,也就是false;
它等价于
boolean a;
if(20<45)
{
a=true;
}
else
{
a=false;
}
(2)运算符比较级
通常运算符的优先级由高到底的顺序是
增量和减量运算
算数运算
比较运算
逻辑运算
赋值运算
如果有相同的运算级别,那么按照从左往右的顺序。
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | () |
2 | 正负号 | ± |
3 | 一元运算符 | ++,- -,! |
4 | 乘除 | *,/,% |
5 | j加减 | + - |
6 | 移位运算 | >>,<<,>>> |
7 | 比较大小 | <,>,>=,<= |
8 | 比较是否相等 | ==,!= |
9 | 按位与运算 | & |
10 | 按位异或运算 | ^ |
11 | 按位或运算 | |
12 | 逻辑与运算 | && |
13 | 逻辑或运算 | 两个竖杠 |
14 | 三元运算符 | ?: |
15 | 赋值运算符 | = |
五 数据类型转换
类型转换是把一个值从一种类型转换成另一种类型的过程。
注意如果从低精度转换为高精度,则永远不会溢出,如果从高精度转换为低精度,
有溢出的风险,有可能会失败。
1 隐式类型转换
从低级类型向高级类型的转换,系统会自动执行,程序员无需进行操作,这种类型转
换称之为隐式转换。
比如
int x=50;
float y=x;
float是高精度,Int则是低精度,将x赋值给y时已经将类型转换。
隐式转换规则
操作数1的数据类型 | 操作数2的数据类型 | 转换后的数据类型 |
---|---|---|
byte、short、char | int | int |
byte、short、char、Int | long | long |
byte、short、char 、int | float | float |
byte、short、char 、int、float | double | double |
2显式转换规则
当把高精度转换为低精度时,必须使用显式类型转换运算
语法如下
(类型名)要转换的值
比如
int a=(int)45.23;//这时输出a的值是45
long y=(long)456.6F;//这时输出y的值是456
int b=(int)'d';//这时输出b的值是100
执行显式类型转换,可能会导致精度损失。除了boolean类型外的其他基本类型,都能以显式类型的方式转换
注意
当把一个整数赋给一个byte,short, int ,long 类型时不可以超过这些变量的取值范围,否则必须进行强制类型转换
如byte=(byte)129;
六 代码注释与编码规范
1注释
1.1 单行注释
//
1.2 多行注释
/**/
1.3 文档注释
/** */ 会生成相应的文档
2 编码规范
序号 | 内容 |
---|---|
1 | 每条语句要单独占一行,一条命令要以分号结束 |
2 | 在声明变量时,尽量每个变量的声明都单独占一行,这样有助于添加备注 |
3 | java代码中,关键字和关键字直接如果有多个空格会视为一个空格 |
4 | 为了方便以后的维护,不要使用技术性很高、难懂、易混淆判断的语句,因为程序维护不是一个人,尽量使用简单的技术完成程序所需要的功能 |
5 |