2020-12-01
java的基础语法:
注释:含义,注释就是对代码的解释说明
特点:当源文件被编译时会被自动忽略注释,编译成字节码文件后这个注释就不存在了。只有我们自己能够查看注释的内容
分类:
1、单行注释://表示一行注释,只能注释一行,不能换行,可以嵌套
2、多行注释:/**/表示多行注释,可以注释多行,能换行,不能嵌套,可以进行行内注释
3、文档注释:
作用:
1、对代码进行说明
2、调试:可以使用注释和输出的方式对错误的代码进行排错
关键字(保留字):eclipse中:紫红色
定义:关键字就是指的是程序中特殊的字符,这是特殊的字符代表了程序中特有的功能,就是指程序中自己用到的一个又一个的英文单词
注意事项:1、不能自己去定义关键字;2、里面包含两个比较特殊的关键字(Java不用,但是无法定义)const,goto
标识符:就是用于自己定义(类名,方法名,变量名,常量名,枚举,包名)的名称
标识符的组成:1、大小写的英文字母a-zA-Z;2、数字0-9;3、特殊字符:_ $
标识符命名的规定(必须遵循):1、标识符中不能使用关键字(eg:class不能自定义,myclass可以);2、不能以数字开头;
标识符命名的规范(可以不遵循):
包名:包名需要遵循倒序的规范;例如:com.ls.test
类名:类名一般需要首字母大写;例如:Person Bean
方法名:首字母小写其余单词首字母大写;例如:getMax,helloWorld;动词或者动宾结构
变量名:首字母小写其余单词首字母大写;例如:name,myName;名词或者形容词
常量名:所以单词全部都大写 每个单词之间需要使用下划线隔开;例如:PI,MONTH_YEAR_DAY
常量
定义:在程序中不变的量就是常量。
分类:
以形式的分类: 1、字面量常量,我们直接能看到常量的值
2、字符常量,以final关键字去修饰的常量叫做字符常量。可以确定常量的用途,无法确定里面的值是多少
以数据类型分类:1、基本数据类型的常量:整数常量(123,-123);浮点数常量(12.34,10.0,-2.0);字符常量(主要是char类型:'数字or中文' eg:'中','1',' '),在使用时需要注意,必须要有内容;布尔类型的常量:表示代码中的是非(true,false)
2、引用数据类型的常量:字符串常量 例如:"","%^&$*"(""里面什么都行);空值常量:NULL 在内存中没有指向任何内容的对象;注意事项:NULL可以传递到任意的重载的方法中,就无法判断使用的是什么方法
代码示例:
package com.ls.cn;
public class Demo1_常量 {
public static void main(String[] args) {
//整数常量:
System.out.println(123);
System.out.println(-10);
System.out.println(0b100);//二进制的表示方式
System.out.println(0100);//八进制
System.out.println(0x100);//十六进制
//浮点数常量:
System.out.println(1.0);
//字符常量
System.out.println('牛');
System.out.println('1');
System.out.println(' ');
System.out.println('a');
//布尔常量
System.out.println(true);
//引用数据类型的常量
//System.out.println(null);
System.out.println("");
System.out.println("%$^*&*&^");
}
}
变量
定义:在程序中可变的量叫做变量
本质:变量就是内存中的存储空间,空间中的内容是不确定的
变量的声明:数据类型 变量名 = 变量值;
详细说明:
数据类型:在内存中开辟空间,指定空间的大小。
变量名:给内存中的空间命名。
=:赋值符号,将等号右边的值赋给左边
变量值:就是给变量赋值的具体值,可以常量,可以是声明过的变量
注意事项:1、变量在声明时必须要加上数据类型;2、在使用时不需要加上数据类型;
数据类型
分类:
基本数据类型:直接在内存中存储它自身的值,修改也在自身的空间中,存储比较简单的值
引用数据类型:存储的是一段内存地址,存储的都是相对复杂的值
基本数据类型四类八种:
整数类:byte(1字节:2^8,-128--127),short(2字节:-32768--32767),int(4字节:-21亿--21亿),long(8字节:-2^63--2^63)
浮点类:float(4字节) IEEE757 999->9^99 大于long类型;double(8字节)
字符类:char 2字节 0-65535,没有负,char来定义一个字符,然后通过单引号括起来的单个字符赋值给它
布尔类: boolean 未知 1字节 true,flase
代码示例:
public class Demo04_数据类型 {
public static void main(String[] args) {
int a = 10;
System.out.println(a);
//int b = 1000000000000;
//long类型需要加上L
long l = 11111000000000L;//默认是int类型,加上L
//float类型加上f
float f = 3.14f;//默认double类型
double d = 10.0;
byte b = 1;
byte b1 = 100;
short s = 10000;
//char 类型
char c = 'a';
char c1 = ' ';
//布尔类型
boolean b2 = true;
}
}
数据类型的转换之隐式转换
含义:小的类型向大的类型进行转换,一定不会出现数据的丢失,可以进行一个自动的类型转换
数据之间的表示范围之间的关系:小->大
byte<char=short<int<long<float<double,Boolean不需要参与比较
注意事项:1、int类型跟int类型以上的数据进行相互运算时,最终结果转换成大的类型
2、int类型跟int类型以下的类型进行相互运算时,直接转换为int类型,不会转换为大的类型
数据类型转换之强制类型转换
定义:大的类型向小范围的类型转换需要特殊的策略进行类型转换,不能直接转换,我们称之为强转
本质:强转有可能出现问题,会造成数据的丢失,由程序员负责,强转就相当于我们在责任书上签字
强转的格式:数据类型a 变量名1 = (转换的数据类型a)变量名2;
注意事项:1、强制类型转换有可能造成数据的丢失;2、小的范围的类型也可以强转成大的范围
package com.ls.cn;
public class Demo06_强制类型转换 {
public static void main(String[] args) {
int i = 10;
long l = i;
byte b = (byte)i;
int i1 = 129;//-128-127
byte b1 = (byte)i1;//循环
System.out.println(b1);
int i2 = 100;
short s1 = (short)i2;
float f1 = 1.73f;
//相当于取整
int i3 = (int)f1;
System.out.println(i3);
double d1 = 12.3;
int i4 = (int)d1;
System.out.println(i4);
}
}
字符类型
定义:字符类型就表示单个的字符,需要用char关键字声明,值需要用单引号引起来
字符类型在底层的存储:1、所有的数据在计算机的底层都是需要转换成数字来进行存储;2、字符类型在存储时可以实现字符与数字之间的转换;3、从字符到数字的过程叫做【编码】;4、从数字到字符的过程【解码】
编码表:每一个字符在计算机的编码集中都代表一个数字。编码表别名字符集
世界上最早的编码表ASCII:数字(48-57)大写字母(65-90)小写字母(97-122)
规律:1、数字与字母之间不连续的;2、大小写不连续;3、数字(48-57)的编码小于大写字母(65-90)的编码,大写字母的编码小于小写字母(97-122)的编码
后来各国都开始研究自己的编码表,我国编码表GBK,适用于中文和英文
国际组织开始统一编码规范,出现了万国码unicode编码表,适用于各国最常用的字符。每一个字符代表的大小是两个字节。
后来为了资源的合理利用又出现了utf-8编码,这种编码表每个字符所占的字节是一个范围,中文字符所占字节3个,英文字符所占字节1个
在Java中使用的是unicode编码,并且Java中字符的编码都\uXXXX,后面XXXX跟的是十六进制的数字
编码集之间的关系:互相之间互不兼容:相同字符在不同的编码表中,对应的数字是不同的;相同数字在不同的编码表中对应的字符是不相同的;所有的编码表都跟ASCII表兼容,在ASCII表中的数字和字符在其他编码表中也遵循里面的规定
字符串类型
字符串类型是一个引用数据类型,定义一个字符串就是用双引号引起来
双引号中的内容可以是任意数量的字符。以string类型来定义
+在字符串类型的计算中表示连接符
运算符
只有常量或者变量不能完成需求,还需要运算符和运算规则来完成
分类:
1、算数运算符;2、比较运算符;3、赋值运算符;4、逻辑运算符;5、位移运算符;6、三元运算符
算数运算符:进行算数运算 可以是一个元素也可以是多个元素。
双目运算符:两个元素进行计算:+-*/%
/ 只保留整数的部分会将余数忽略,如果需要保留小数部分将其中一个元素转换成浮点数
%不用管商是多少,直接取余
一目运算符:++自增,--自减
自增:在自身的基础上加1;自减:在自身的基础上减1
++在前是前自增,在后是后自增
区别:在前自增时先自增在计算结果,在后自增时先输出运算结果在自增
比较运算符:比较数据之间的大小关系,比较的结果都是布尔类型
比较大小关系:<,>,<=,>= 整数 浮点数 字符(会先转成int类型再去比较)
比较是否相等:!=,== 可以比较任意的类型
赋值运算符:将等号右边的值赋值给左边
赋值符号:=
扩展的赋值符号:+=,-=,*=,/=,%=
int i+=2;--->i = i = 2;
逻辑运算符:代码中的逻辑关系需要用到逻辑运算符
分类:
&& 与:表示并且的关系
穷举出所有的情况:
true&&true true
true&&false false
false&&true false
false&&false false
|| 或
true||true true
true||false true
false||true true
false||false false
! 非:遇对则错,遇错则对
短路与或:当或运算左边为true,不去执行右边的表达式
当进行与运算时左边为false,不会再去执行右边的内容了
位移运算符:符号位+:0;-:1
就是用来快速计算 数据除于2,或者乘与2
左移运算符<<,就相当于将数据扩大两倍
右移运算符>>,就相当于将数据缩小一半,不要使用右位移来操作负数
无符号的位移>>>,将数据缩小一半
区别:有符号的右移在符号位上会加上1,无符号不会去管符号位
无符号位移的执行效率要高于有符号
三元运算符:进行比较运算
格式:条件表达式?表达式1:表达式2
执行的顺序:先去判断条件表达式,如果成立执行表达式1,如果不成立执行表达式2