程序员社区

JAVA基础 1

关键字

在这里插入图片描述
在这里插入图片描述

保留字

在这里插入图片描述

标识符

在这里插入图片描述
在这里插入图片描述

变量

在这里插入图片描述

变量的分类

字符串是 类型的。
在这里插入图片描述
在这里插入图片描述

变量的类型详解

整型
在这里插入图片描述
浮点型
float表示数值的范围比long还大
在这里插入图片描述在这里插入图片描述在这里插入图片描述
字符型
在这里插入图片描述
ASCII码
在这里插入图片描述
布尔类型boolean
在JAVA中,true就是true,不是非零;false就是false,并不是零,和c语言有点区别

基本数据类型转换

自动类型提升运算
在这里插入图片描述
强制类型转换(即自动类型提升运算的逆运算)

截断操作,损失精度
在这里插入图片描述
二进制层面,byte最大127,128溢出了,又变成-128了
在这里插入图片描述

变量运算的两个特殊情况

编译失败是因为数后面没加L,默认分配给这个数4字节的int空间,由于四字节装不开,就报错了,如果末尾加上L,就分配8字节的long类型空间,就能装开不报错了。这个分配的int空间如果数够用就不用加L。
在这里插入图片描述


数12.3默认是double类型,如果赋给float必须要在末尾加f。
1默认是int型,所以b+1是int 型,不能赋给byte,12.3默认是double型,b+12.3不能赋给float类型,会报错或者造成精度损失。

在这里插入图片描述

String

在这里插入图片描述
加号 + 前后只要有一个是String,就是连接符,否则就是加法运算。
在这里插入图片描述
例题1:

加号 + 前后只要有一个是String,就是连接符,否则就是加法运算。
在这里插入图片描述
例题2:
在这里插入图片描述
** * 星号的ASCII码是42
‘\t’ 制表符的ASCII码是9
’ '单引号内是字符 char类型
" "双引号内是字符串,String类型**
解释:
1、第一行正常输出,
2、第二行三个字符相加,输出int型42+9+42=93
3、第三行前两个相加由于第二个是String类型 所以是连接符,输出星号制表符星号
4、第四行前两个是字符型所以相加输出int型 42+9=51,再加一个String类型,就是起连接符作用
5、第五行后两个相加是连接符String类型,在和第一个相加还是String类型。(String和其他类型相加还是String类型)

典型例题:
在这里插入图片描述

进制

程序编写用2 10 8 16 进制,
程序输出结果时都是10进制输出
在这里插入图片描述


小细节(涉及底层):
int是32位的,byte是8位的,
计算机是用补码存储信息的。
在byte下, 1000 -0000 是-128的意思,
在int下,0000-0000 0000-0000 0000-0000 1000-0000 是128,强转为byte后只保留最后8位 1000-0000,也就是-128了。


运算符

+= 运算时不会改变变量本身的数据类型,就是 short型 s1 和int型 2 通过+= 运算时 仍然是short型
在这里插入图片描述
示例:
练习1:

1*0.1=0.1 由于还是int类型,就变成0,++后就变成了1
在这里插入图片描述
练习2:
在这里插入图片描述
练习3:
答案是n=32
在这里插入图片描述


比较运算符

注意第二个输出,先把 j 赋值给 i ,在输出 i的值。
在这里插入图片描述

逻辑运算符

在这里插入图片描述
& 和&&的唯一区别
在这里插入图片描述
在这里插入图片描述
| 和|| 的唯一区别
在这里插入图片描述
在这里插入图片描述
开发中建议使用 && 和 ||

位运算符

在这里插入图片描述
在这里插入图片描述
21<<2 =21✖2✖2=84
在这里插入图片描述
一些举例:
在这里插入图片描述

三元运算符

在这里插入图片描述

运算符优先级

在这里插入图片描述

Java有没有goto

答:java中的保留字,现在没有在java中使用

三元运算符的自动类型转化

第一题

public class yunsuanfu {
    public static void main(String[] args) {
        int a = 5;
        System.out.println("value is "+((a<5) ? 10.9 : 9));
    }
}
 如果你觉得输出的结果是9,那就中了这道题的陷阱了,注意下“((a<5) ? 10.9 : 9)”,里面有一个10.9,
 而后面跟了一个9,这是java就会根据运算符的精确度类型进行自动类型转换,由于前面有一个10.9,
 所以后面的9会被转换成9.0,所以输出的是9.0.

第二题

public class yunsuanfu {
    public static void main(String[] args) {
        char x='x';
        int i =10;
        System.out.println(false ? i : x);
        System.out.println(false ? 10 : x);
    }
}

输出的结果是:120 x

int i=10;中i是一个变量,所以第一个输出x被强制转换成int型了,应为i是int类型,x存储的字符x的值转换成int值是120,所以第一个输出120。

至于第二个输出,java规范中提到,当后两个表达式有一个是常量表达式(上面指10),另外一个类型是T(上面指char)时,而常量表达式可以被T表示时,输出结果是T类型。

因为10是常量,可以被char表示,输出的结果是char型的,所以是x。

赞(0) 打赏
未经允许不得转载:IDEA激活码 » JAVA基础 1

一个分享Java & Python知识的社区