标识符:由26个英文字母,0~9个数字,下划线以及美元符号$,并且首字母不能为数字,也不可以使用关键字,java中严格区分大小写的。java中的名称规范:包名:多单词组成时所有字母都小写,xxxyyyzzz。类名接口名:多单词组成时,所有单词的首字母大写,XxxYyyZzz。变量名和函数名:多单词组成时,第一个单词首字母小写,第二 个单词开始每个单词首字母大写,xxxYyyZzz。常量名:所有字母都大写。多单词时每个单词用下划线连接,XXX_YYY_ZZZ。
注释:Java中的注释格式:单行注释;格式://注释文字。多行注释;格式:/* 注释文字*/。文档注释;格式:/** 注释文字*/。
对于单行和多行注释,被注释的文字,不会被JVM( java虚拟机)解释执行。对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。注释是一个程序员必须要具有的良好编程习惯。初学者编写程序可以养成习惯:先写注释再写代码。
常量与变量:常量表示不能改变的数值。变量的概念:内存中的一个存储区域;该区域有自己的名称(变量名)和类型(数据类型);该区域的数据可以在同一类型范围内不断变化。定义变量的格式:数据类型变量名 = 初始化值。数据格式转换:自动类型和转换和强制类型转换;自动数据类型转换:表达式的数据类型自动提升,所有的byte型、short型和char的值将被提升到int型;如果一个操作数是long型,计算结果就是long型;如果一个操作数是float型,计算结果就是float型;如果一个操作数是double型,计算结果就是double型。强制类型转换:变量=(类型)运算。
运算符:算术运算符;赋值运算符;比较运算符;逻辑运算符;位运算符;三元运算符。
如何理解 :在Java中 只有相同的数据类型才可以作运算,不同数据类型做运算是有条件的。
如:
public class Demo {
public static void main(String[] args) {
//定义一个byte型变量
byte b = 10 ;
b = 10+5 ;
System.out.println(b);
}
}
以上代码运行结果为:15
public class Demo {
public static void main(String[] args) {
//定义一个byte型变量
byte b = 10 ;
byte b1 = 10 ;
byte b2 = 5 ;
b = b1 + b2; //将变量b1,b2的值相加然后赋给b
System.out.println(b);
}
}
以上代码在编译时会报:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to byte
at com.base.learn.Demo.main(Demo.java:10)
b1,b2都是byte类型变量,为什么执行b=b1+b2会报编译错误,而执行b=3+4却能得到正确结果呢?
由于b1是byte类型变量,常量3和4默认为int类型。因此执行b1=3+4是实际上是对“3+4”之和做了强制类型转换并判断是否超出了byte型所能表示的范围。然而在执行b = b1 + b2时,b1、b2是byte型变量,因此编译器不能确定其取值范围,不能准确判断其取值是否在byte范围,故编译时报错。
又如:
public class Demo {
public static void main(String[] args) {
//定义一个int型变量并把int类型可表示的最大值赋给变量i
int i = Integer.MAX_VALUE;
int j = 1 ;
i = i+j ;
System.out.println(i);
}
}
//结果输出:-2147483648
上面说到在编译时会判断变量的取值是否在其类型的取值范围内。i=Integer.MAX_VALUE;执行之后i的值为int型最大值,若加一已经超出了int的取值范围,为什么还能运算呢 ?因为,i、j都是int型变量,因此在运算时不做类型的转换。运算结果超出范围强制转换,改变数值。