Java是一门强类型语言,哪里可以体现其强类型的观点?
命令:javadoc 选项 Java源文件 | 包
常用标记如下:
标识符使用规则:
long i = 43;//这不是因为Java把一个较小的数当成long类型来处理,而是int类型的值自动转型为long了
默认是double的数,float的数后面要加f作为后缀。
Java 语言的浮点数有两种表示方式:
三个特殊的浮点数值:正无穷大(POSITIVE_INFINITY)、负无穷大(NEGATIVE_INFINITY)、非数(NaN)。
所有的正无穷大都是相等,负无穷大都是相等,而非数不与任何数值相等,与自己也不相等,只有浮点数除0 才可以得到这三个数,整数除0将报错。
public static void main(String[] args)
{
float af = 5.2345556f;
// 下面将看到af的值已经发生了改变
System.out.println(af);//5.2345557
double a = 0.0;
double c = Double.NEGATIVE_INFINITY;
float d = Float.NEGATIVE_INFINITY;
// 看到float和double的负无穷大是相等的。
System.out.println(c == d);//true
// 0.0除以0.0将出现非数
System.out.println(a / a);//NaN
// 两个非数之间是不相等的
System.out.println(a / a == Float.NaN);//false
// 所有正无穷大都是相等的
System.out.println(6.0 / 0 == 555.0/0);//true
// 负数除以0.0得到负无穷大
System.out.println(-8 / a);//-Infinity
// 下面代码将抛出除以0的异常
// System.out.println(0 / 0);// by zero
}
boolean类型的值只能是true和false。
Java规范并没有强制指定boolean类型的变量所占用的空间,由于大部分计算机分配内存最小单位是字节(8位),因此大部分boolean占用8位。
与字符串进行连接运算时,自动转成字符串。
System.out.println(3 + 4 + "hello");//7hello
System.out.println("hello" + 3 + 4);//hello34
public static void main(String[] args)
{
var iValue = 233;
// 强制把一个int类型的值转换为byte类型的值
byte bValue = (byte) iValue;
// 将输出-23 典型的溢出
// int是32位,转换成8位的byte,需截断前面24位,保留后面8位,第8位是一个符号位,
// 此数第8位是1,表明是一个负数,负数以补码的形式存在于内存中,换算成原码得输出结果。
// 将补码减1得反码,再将反码取反的原码(符号位不变)。
System.out.println(bValue);
var dValue = 3.98;
// 强制把一个double类型的值转换为int
int tol = (int) dValue;
// 将输出3 直接截断浮点数的小数部分
System.out.println(tol);
}
short sValue = 5;
// 将会报错 表达式操作数最大类型为int
sValue = sValue + 1;
// 将会报错 short类型运算时自动提升到int
sValue = sValue + (byte)1;
// 右边表达式中2个操作数都是int,故右边表达式的类型为int
// 因此,虽然23/3不能除尽,依然得到一个int整数
int intResult = 23 / 3;
直接量类型:int、long、float、double、boolean、char、String、null。(无byte和short)
//String直接量赋值
var s0 = "hello";
var s1 = "hello";
var s2 = "he" + "llo";
System.out.printn(s0 == s1);//true
System.out.printn(s1 == s2);//true
赋值表达式的值就是右边被赋的值。
System.out.print(a = 3)//3
扩展后的赋值运算符(如:+=),运算时类型不会自动提升。
// 定义一个byte类型的变量
byte a = 5;
// 下面语句出错,因为5默认是int类型,a + 5就是int类型。
// 把int类型赋给byte类型的变量,所以出错
// a = a + 5;
// 定义一个byte类型的变量
byte b = 5;
// 下面语句不会出现错误
b += 5;
比较运算符==,在比较引用类型时,只有当两个引用类型具有父子关系才可以比较,只有两个引用指向同一个对象时才会返回true。
移位规则:
技巧:
switch后面的控制表达式只能是byte、short、char、int四种整数类型,枚举类型和java.lang.String类型。(不能是boolean)
break,continue只能在循环体的最后一行。
Java标签就是一个紧跟着英文冒号(:)的标识符,Java的标签只有放在循环语句外才有作用。
public static void main(String[] args)
{
// 外层循环,outer作为标识符 可以自定义
outer:
for (var i = 0; i < 5; i++)
{
// 内层循环
for (var j = 0; j < 3; j++)
{
System.out.println("i的值为:" + i + " j的值为:" + j);
if (j == 1)
{
// 跳出outer标签所标识的循环。
break outer;
// 若是continue的话 忽略outer标签所指定的循环中本次循环所剩下语句。
// continue outer;
}
}
}
}
原文:https://www.cnblogs.com/jtStudy/p/14593738.html