文章目录
一.关键字
关键字---在java中具有特殊功能的单词
53个关键字,全部是小写
二.标识符
1.概念
标识符---在java中可以自定义的名称
2.组成范围
1.各国常见文字 2.数字(0-9) 3.特殊符号(_、$(慎用---内部类使用))
3.命名规则
1.不能出现关键字 2.不能以数字开头
在组成范围内的内容且遵守命名规则的是符合java语法的标识符(合法)
4.驼峰命名法(是在标识符合法的基础上)
1.类名/接口名---XxxYyyZzz
2.方法名/变量名---xxxYyyZzz
3.包名(包是用来区分同名类) 单级---xxx cn 多级---xxx.yyy.zzz
5.见名知意
三、注释
注释---用于解释说明的文字(不参与程序的执行)
格式
单行注释---//注释内容 (可以嵌套单行注释)
多行注释---/*注释内容*/(可以嵌套单行注释不能嵌套多行注释)
文档注释---/**注释内容*/(可以通过javadoc命令生成解释说明的文档)
四、常量
1.概念
程序运行过程中不发生改变的值
2.分类
字面值常量
整数常量 1000 1871
小数常量 1.1 0.345
字符串常量 "12" "askjhg"
字符常量 '3' 'd'
布尔常量 true false
空常量 null
自定义常量(面向对象讲)
3.整数表示方法
二进制: 由0和1表示的数据 以0b开头的数据就是二进制数据 0b1000
八进制:由0~7表示数据 以0开头的数据就是八进制数据 01010
十进制 由0~9表示数据 默认
十六进制:由0~9 ,a~f(不区分大小写)表示数据 以0x开头的数据是十六进制数据
public class JavaDemo{
public static void main(String[] args) {
System.out.println(0b100);
System.out.println(0100);
System.out.println(100);
System.out.println(0x100);
}
}
4.进制的转换
(二进制转八进制可以三位一组,往前补0,二进制转十六进制可以四位一组,往前补0)
5.有符号的数
小数
绝大部分的二进制小数是无限位数
对于十进制转二进制,大部分人都知道整数是除2取余,逆序排列 直到商为0时为止。但是小数呢,规则是和整数不一样的,规则如下:乘2取整,顺序排列 直到积中的小数部分为零
6.变量
1.概念
在程序运行过程中可以改变的值
可以存储单个数据的容器
2.数据类型
char c='中'; 文字转成底层数字---编码 文字转成底层数字的规则---码表 ASCII(阿斯克码表 占用一个字节)---ISO8859-1(西欧码表 占用一个字 节)---BIG5(繁体中文--占用2个字节)、GB2312(简体中文--占用2个字节)--- GBK(国标码 占用2个字节)---Unicode(编码体系 UTF-8(占用3个字 节)、UTF-16(占用2个字节)、UTF-32等等 )
所有的完整码表默认兼容西欧码表
char c='中';以u8进行编码,底层占用3个字节
char c='a';以u8进行编码,底层占用1个字节
转义字符
'\t'---制表符空格 '\r'---回车 '\n'---换行
引用数据类型(类、接口、数组)
3.变量定义
定义变量 注意:
1.在java中初始化进行赋值时如果给定的是整数那么这个整数的类型默认是int类型
2.在整数后面加上L/l,此时整数类型指定为了long类型
3.在java中初始化进行赋值时如果给定的是小数那么这个小数的类型默认是 double类型
4.在整数后面加上F/f,此时整数类型指定为了float类型
5.变量的定义分为声明和初始化两个过程
6.变量在哪定义在哪使用
class JavaDemo{
public static void main(String[] args) {
//定义int类型的变量
int i=1;
//给定的是变量名称但是操作的是变量值
System.out.println(i);
//定义long类型的变量
long l=234628348734L;
System.out.println(l);
//定义float类型的变量
float f=2.12F;
//如果变量没有被操作,那么变量可以先不给值
int i1;//声明
i1=1;//初始化
System.out.println(i1);
}
}
4.类型转换
变量的操作
类型转换
类型提升(默认 从小到大)
byte-short、char-int-long-float-double
byte、short、char无论做任何操作都会类型提升为int类型
1.int变byte会报错
class Demo{
public static void main(String[] args) {
//定义变量
byte a=1;
int b=2;
byte c=a+b;
System.out.println(c);
}}
2.short与byte之间类型转换(有)
//说明byte和short之间有类型提升
byte b=1;
short s=b;
//把字符转成对应的编码值再赋值给short变量
//如果字符转成的编码值大于short的范围就不能正常赋值
short s='中';//97
//'0'---48 'A'---65 'a'---97
//把数字通过编码转成对应的字符再赋值给char变量
char c=99;
3.short与char之间(没有)
//没有类型提升,short类型的取值范围包含负数但是字符不能出现负数
short s=1;
char c=s;
4.int与char之间(有)
//int和char之间有类型提升
char c='1';
int i=c;
5.int与long之间(有)
//int和long之间有类型提升
int i=1;
long l=i;
6.float与long之间(有)
//float和long之间有类型提升
//从整型到浮点型进行类型提升时可能会出现精度丢失问题
long l=13456287343L;
float f=l;
System.out.println(f);
7. float与double之间(有)
//float和double之间有类型提升
float f=1.1F;
double d=f;
8.byte,char,short底层的类型就是int类型
byte b1=1;
short s=2;
char c=3;
byte b2=2;
9.强制把int类型转成byte类型
byte b3=(byte)(b1+b2);
10.小数强制类型转成整数可能会出现舍弃
float f=4.99993476F;
int i=(int)f;
System.out.println(i);
11.byte与int之间需要注意的是
public class test {
public static void main(String[] args) {
int b=128;
byte bb=(byte)b;
//-128?
System.out.println(bb);
//当等号右边所有参与运算的数据都是常量
//那么在编译时期会进行优化直接计算结果再把结果赋值给变量
byte bbb=128-1;
System.out.println(bbb);
}
}
解释:00000000 00000000 00000000 10000000 int 128 补码
转成byte类型 10000000 byte 补码 负数
11111111 byte 反码 负数
10000000 byte 原码 负数--- -0 规定表示对应类型的最小值 是-128(特殊认为可以把最高位既当做符号位也当做数值位)