欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

快速掌握JAVA基础:知识点全汇总指南

最编程 2024-07-26 10:12:43
...

由于本人的个人博客网站到期,因此开始整理之前的学习笔记发布到简书,供日后学习使用。

关键字

  • null,goto,const,true和false是不是java关键字?

都不是,他们是java保留字,不是Java关键字,也就是Java保留了,但是没有使用。

  • java关键字是不是都是小写

是的,java关键字都只能小写

标识符

标识符是java编码语言中类,方法,变量的名字

  • 9pins, a+c, It's,Java私塾是不是正确的标识符?

只有Java私塾是正确的,注意以下几点标识符命名规则:

  1. 只能以下划线,或者字母开头,后面可以接上字母,数字,或者下划线
  2. java标识符由符合规范的UNICODE字母组成,所以可以使用中文

基本数据类型

java是一种强类型语言,也就是先声明后使用, 且若未作类型转换,则不能接受其它数据类型的赋值

  • java有几种基本数据类型?

8种基本数据类型。注意String不是基本数据类型,是一个类

数据类型 说明
boolean 布尔型,值为true或者false
byte 字节型,8位,范围为-2^7 到 2^7 -1即 -128 - 127
short 短整型,16位,
int 整型,32位,整数型的值默认是int
long 长整型,64位
float 浮点型,
double 双精度型,浮点型的值默认是double
char 字符类型,表示单字符
  • byte的取值范围为什么是-128 - 127

解释

需要注意,在计算机种内部数据都是以二进制存储和计算的;数据分为有符号数和无符号数,有符号数的最高位为符号位,0表示正数,1表示负数;Java中的数据是有符号数;计算机的整数数据是以二进制的补码存储的。
计算机中的最大的正数补码为:01111111 = 1+2+4+8+16+31+64 = 127
最小的负数补码为:11111111 得到对应的原码为 10000000,转化成十进制为128

  • 计算机为什么要使用二进制的补码存储数据?

详细解释

如果使用二进制的原码,反码,补码表示+0和-0的话,只有补码是一致的,而原码和反码则是不一致的。

  • float f=4096.0;是否会引起编译错误?

是,因为浮点型定义的时候必须要申明出是浮点型,后面加上f或者F

类型转换

  • long num = 99L; int num2 = (int) num; 强制类型转换是否正确?

正确

  • long num = 99; int num2 = 99L; double num3 = 12.414F; double num4 = 12.414; 表达式是否正确?

num正确,因为99是int型,可以自动升级为精度较长的形式
num2不正确,99L是长整型,不能自动降级为精度较低的形式,需要进行强制转换
同理num3正确,num4不正确

  • short a,b,c; a=1; b=2;c=a+b 是否正确?

不正确,因为在执行+操作前,a和b都会自动升级为int型,a+b为int型,所以把int型的数据赋值给short不正确.主要是因为+运算结果要为int型.

  • Integer a = 5;int a2 = new Integer(5);是否正确?

正确,自动包装:将基本数据类型自动包装成对应的包装类引用对象
自动解包:将包装类的引用对象自动解包成对应的基本的数据类型

子类初始化

  • 子类初始化时先初始化父类,再初始化子类。初始化类,先初始化类的属性,再初始化类的构造方法。
  • super()和this()必须放在构造函数的第一行

方法重载和方法覆盖

  • 方法重载:重载的方法必须方法名相同,参数列表不同,仅仅返回类型不同不能重载
  • 方法覆盖:子类重写父类的方法,方法名,返回类型,参数列表必须相同,访问修饰符不能降级

static关键字

  • 静态方法只能访问静态属性,不能访问非静态属性
  • 静态方法不能调用非静态方法,非静态方法可以访问静态方法
  • 静态方法中不存在当前对象,所以不能使用this关键字
  • 构造方法不能被声明为静态方法

抽象类

  • 抽象类不一定包含抽象方法,包含抽象方法的类一定是抽象类

接口

  • 接口中的属性默认也只能是public static final
  • 接口中的抽象方法默认也只能是public abstract
  • 接口是一种特殊的抽象类,只包含常量和抽象方法,不包含变量和方法的实现

子类和父类实现同一个接口的意义

  • 效果上没什么特别用途,主要是表示子类实现了这个核心接口

String 字符串常量池

  • String str1="abc"; String str2="abc"; result = str1==str2;
    result 结果为true,因为str1="abc"首先在方法区中的常量池中生成一个对象,然后str2="abc"是生成一个新的对象引用,指向常量池中的"abc",所以str1和str2指向同一个对象,所以相等
  • String str1="abc"; String str2="ab"+c; result = str1==str2;
    result 结果为true,因为str2="ab"+c在编译时已经确定为"abc",所以会和str1指向同一个"abc"对象
  • String str1="abc"; String str2="ab"; String str3=str2+"c" result = str1==str3;
    result 结果为false,因为str3=str2+c在编译时不能确定引用类型str2的内容,只有在运行时动态连接并分配新的地址给str3
  • String str1="abc"; final String str2="ab"; String str3=str2+"c" result = str1==str3;
    result 结果为true,str2="ab" 在编译时就以及在常量池维护了"ab",str3=str2+"c"在编译时可以确定str2的值为"ab"了

推荐阅读