1.关键字
java中提供53个关键字包括2个保留字const和goto。每个关键字都有其特殊含义,有其特定的语法
2.标识符
开发者可以自定义的名字,来标识代码的很多元素,包括包名、类名、方法名、变量名、字段等等
标识符应该遵循的规则:
1)标识符可以由数字、字母、下划线(_)、美元符号($)组成,但不能包含@、%、空格等其他特殊字符
2)不能以数字开头,可以以数字结尾;而且不能下划线/美元符开头或者结尾。123name 就是不合法, _ name / name_ / $ name / name $不合法
3)标识符不能是java关键字
4)标识符严格区分大小写。如: tmooc 和 tMooc 是两个不同的标识符
5)标识符的命名最好能反映其作用,做到见名知意
注意:
1.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。
注意,即使纯拼音命名方式也要避免采用。
正确案例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
错误案例:DaZheModule [打折模块] / getPingfenByName() [评分]
2.【强制】类名使用 UpperCamelCase 风格
3.变量
1)临时储存的一些数据,会改变,称为变量。也会有一直不会改变的量称为常量。
2)变量的声明格式:
变量类型 变量名 = 变量值
int age =18;
3)注意:变量一定要遵循标识符的五大规则
其中:见名知意
4)驼峰命名法:
1)大驼峰规则:声明类名时,所有单词首字母均为大写
public class VarDemo{}
2)小驼峰规则:声明方法名、变量名时,首单词首字母小写,后面单词首字母均为大写
方法名:public static void personStep(){}
变量名: String idNumber = 123456;
5)变量的几种错误编译:
System.out.println(name);
String uname;
1)System.out.println(uname);//编译错误:uname未初始化赋值
2)username=“Java”;//编译错误;username未声明类型,不能赋值
3)uname=123;//编译错误:变量声明类型和赋值类型不一致
4)String uname;//编译错误:uname重复声明变量名
4.注释
1)概念:
向任何阅读代码的人描述或者解释程序的实现思路
编译器会忽略注释,所以注释并不会影响程序的运行结果
2)分类:
1)单行注释:
格式:双斜杠//
作用:注释单行的内容
快捷方式:Ctrl+/,再一次可以取消注释
2)多行注释:
格式:以“/*”开头,以“*/”结尾
作用:注释多行内容,也可注释单行内容
快捷方式:Ctrl+Shift+/添加注释,Ctrl+Shift+\取消注释,也可以输入“/*”之后按回车添加注释
3)文档注释:
格式:以“/**”开头,以“*/”结尾
作用:一般注释类和方法,解释类和方法所指代的信息内容
快捷方式:输入“/**”之后按回车添加注释
5.数据类型
数据类型 = 8大基本类型 + 引用类型
5.1基本类型
计算机的最小单位是位,读成:bit比特,计算机系统有32位(b)和64位(b);
java最小单位是byte字节,1byte = 8bit;
1)8大基本类型:
注意:数据的存储要根据基本类型的取值范围来选择合适的基本类型来声明
练习:求基本类型的最大值最小值
package cn.tedu.basic;
/*本类用于测试几种基本类型的取值范围*/
public class TestTypeScope {
//1.创建程序入口main方法,此方法必须创建
public static void main(String[] args) {
/*进行整型类型的测试byte short int long*/
//2.定义对应类型的变量,分别保存最大最小值
byte byteMax = Byte.MAX_VALUE;//保存byte类型最大值,(变量名小驼峰命名法:首字母单词小写,后面每个单词首字母大写)
byte byteMin = Byte.MIN_VALUE;//保存byte类型最小值
//3.打印获取对应的类型的最大最小值,Ctrl + Alt+下方向键,向下复制一行
System.out.println("byte的最大值是:"+byteMax);//127
System.out.println("byte的最小值是:"+byteMin);//-128
short shortMax = Short.MAX_VALUE;
short shortMin = Short.MIN_VALUE;
System.out.println("short的最大值是:"+shortMax);//32767
System.out.println("short的最小值是:"+shortMin);//-32768
//Ctrl+Alt+下方向键复制粘贴新的一行,再Ctrl+F 查找替换
long longMax = Long.MAX_VALUE;
long longMin = Long.MIN_VALUE;
System.out.println("long的最大值是:"+longMax);//9223372036854775807
System.out.println("long的最小值是:"+longMin);//-9223372036854775808
int intMax = Integer.MAX_VALUE;
int intMin = Integer.MIN_VALUE;
System.out.println("int的最大值是:"+intMax);//2147483647
System.out.println("int的最小值是:"+intMin);//-2147483648
/*测试浮点类型数据 float double*/
float floatMax = Float.MAX_VALUE;
float floatMin = Float.MIN_VALUE;
System.out.println("float的最大值是:"+floatMax);//3.4028235E38
System.out.println("float的最小值是:"+floatMin);//1.4E-45//E代表10的多少次方
double doubleMax = Double.MAX_VALUE;
double doubleMin = Double.MIN_VALUE;
System.out.println("double的最大值是:"+doubleMax);//1.7976931348623157E308
System.out.println("double的最小值是:"+doubleMin);//4.9E-324
/*测试字符类型数据 char*/
/*1.char类型可以保存一个字符/汉字/数字,
* 若保存数字,打印时会把对应的ASCII码表中的字符拿出来打印
*2.ASCII码表中规定了0~127对应的字符,128~65535以问号?处理输出
*/
char c1 = 'a';//字符类型可以保存一个字符
char c2 = '国';//保存一个汉字
char c3 = 97;//保存一个数字
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
/*测试布尔类型*/
boolean b1 = true;//真,1
boolean b2 = false;//假,0
}
}
2)char字符的特殊性
中国 gb2312【字少】
gbk【识别4万+汉字】
万国码表unicode【ISO制定】
所有码表都兼容ASCALL
把人类文字通过计算机去表达,计算机0和1,二进制。a,b
解决方案ASCII编码,它把人类09,az设置一个数字顺序,编号。
a字母97整数(十进制转换二进制)二进制值:0110 0001
我们在键盘上敲击一个a字母,把a字母去查ASCII编码表中查询a字母的对应编号97,
把97整数转换二进制 0110 0001,最后计算机能识别。计算机又把二进制转换十进制97,把97又转换a字母,然后在屏幕上展现。
这个过程意义,为什么要做2次转换呢?人类和计算机通讯。
字符默认值:ASCII码表它第一个值0:NUL,总共128个,A 65,a 97,字符类型它有一个特殊性:它可以有两个身份:
char c1 = ‘a’;
char c2 = 97;
5.2基本类型的默认值(字面值)
1)整数类型默认int,
byte、short、char三种比int小的整数可以用范围内的值直接赋值
2)浮点类型默认double
3)后缀加L/F/D
long x = 12345678990L;//默认值是int类型,要转成long类型时,需要在值的后面加后缀L
float f = 12.3F;//浮点型默认double类型,想要转成单精度float类型需要在只后面加后缀F/f
double d = 3D;//int类型转成double类型,需要加后缀D
4)进制的前缀:
0b--标识这是二进制,0b0101
0--标识这是8进制,8进制是三位,023
0x--标识是16进制,如:0x0001
\u--标识这是char类型,属于16进制
5.3基本类型之间的转换
口诀:
小转大,直接转,大转小,强制转(加强转类型),符转整,小数没
byte,short,char→ int→ long→float→double
注意:
1)强转会导致值的精度溢出或者损失
2)不能对boolean类型进行类型转换。
5.4基本类型的运算规则
1)计算结果的数据类型,与最大数据类型一致
System.out.println(3/2d);//1.5,
int/double。得到的结果是double
2)byte,short,char三种比int小的整数,运算时会先自动转换成int
3)整数运算溢出
举例:计算光速运行一年是多少米?光速3亿m/s
注意:整型数据的运算会超出int取值范围(10位数),所以要把整数提升成long类型(19位数)
要超出int范围的那个值加后缀L
package cn.tedu.basic;
//需求:求光运行一年能跑多少米?已知光速3亿m/s
public class Demo {
public static void main(String[] args) {
System.out.println(300000000L*60*60*24*365);
System.out.println(1-0.8);//运算有时不精确
System.out.println(3.14/0);//Infinity无穷大
System.out.println(0.0/0);//NaN不是一个数
System.out.println(300000000L*60*60*24*365);//在要超出int范围时的数就要加L
byte B1 = (byte) 128;
System.out.println(B1);
}
}
4)浮点数的特殊值
Infinity---无穷大,比如3.14/0
NaN--not a number,比如0/0.0或者0.0/0
5)浮点数运算不精确
后面知识会学到,BigDecimal解决浮点数运算不精确的问题
6.拓展
1.基本类型和包装类型的优势劣势:
java基本类型获取和访问的速度快,占用内存空间小,执行速度快
包装类型对象,它有额外很多方法,这些内容都要占内存,访问速度慢,包装类型(对象)占用内存空间大些,但是开发方便,无需自己去写这些额外方法
2.为什么需要包装类型?
基本类型实现不了的。基本类型为了性能快,它不提供去获取这个值的取值范围。
java把基本类型“包装”,java给每个基本类型都有一个对应包装类型,包装后就是对象,
它就提供额外方法,例如提供获取这个类型的最大值max和最小值min(取值范围)。