从零开始回顾Java---系列二

简介: 基础语法1、Java 有哪些基本数据类型?如图所示:表格总结:数据类型 内存大小 默认值 取值范围byte 1 B (byte)0 -128 ~ 127short 2 B (short)0 -215 ~ 215-1int 4 B 0 -231 ~ 231-1long 8 B 0L -263 ~ 263-1float 4 B 0.0F ±3.4E+38(有效位数 6~7 位)double 8 B 0.0D ±1.7E+308(有效位数 15 位)char 英文 1B,中文 UTF-8 占 3B,GBK 占 2B。 '\u0000' '\u0000' ~ '\uFFFF'

基础语法

1、Java 有哪些基本数据类型?

如图所示:

表格总结:

数据类型

内存大小

默认值

取值范围

byte

1 B

(byte)0

-128 ~ 127

short

2 B

(short)0

-215 ~ 215-1

int

4 B

0

-231 ~ 231-1

long

8 B

0L

-263 ~ 263-1

float

4 B

0.0F

±3.4E+38(有效位数 6~7 位)

double

8 B

0.0D

±1.7E+308(有效位数 15 位)

char

英文 1B,中文 UTF-8 占 3B,GBK 占 2B。

'\u0000'

'\u0000' ~ '\uFFFF'

boolean

单个变量 4B / 数组 1B

false

true、false

注意:JVM 没有 boolean 赋值的专用字节码指令boolean f = false 就是使用 ICONST_0 即常数 0 赋值。单个 boolean 变量用 int 代替,boolean 数组会编码成 byte 数组。

2、自动类型转换、强制类型转换?看看这几行代码?

Java 所有的数值型变量可以相互转换,当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,可以进行自动类型转换;反之,需要强制转换。


这就好像,小杯里的水倒进大杯没问题,但大杯的水倒进小杯就不行了,可能会溢出。

float f=3.4,对吗?

  • 不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4 或者写成float f =3.4F。

short s1 = 1; s1 = s1 + 1;对吗?short s1 = 1; s1 += 1;对吗?

  • 对于 short s1 = 1; s1 = s1 + 1;编译出错,由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。
  • 而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。

3、自动装箱/拆箱是什么?

每个基本数据类型都对应一个包装类,除了 int 和 char 对应 Integer 和 Character 外,其余基本数据类型的包装类都是首字母大写即可。

自动装箱 将基本数据类型包装为一个包装类对象,例如向一个泛型为 Integer 的集合添加 int 元素。

自动拆箱 将一个包装类对象转换为一个基本数据类型,例如将一个包装类对象赋值给一个基本数据类型的变量。

比较两个包装类数值要用 equals ,而不能用 == 。Java可以自动对基本数据类型和它们的包装类进行装箱和拆箱。

4、break ,continue ,return 的区别及作用?

  • break 跳出整个循环,不再执行循环(结束当前的循环体)
  • continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
  • return 程序返回,不再执行下面的代码(结束当前的方法 直接返回)


5、说说自增自减运算?看下这几个代码运行结果?

++和--运算符可以放在变量之前,也可以放在变量之后。

当运算符放在变量之前时(前缀),先自增/减,再赋值;当运算符放在变量之后时(后缀),先赋值,再自增/减。

例如,当 b = ++a 时,先自增(自己增加 1),再赋值(赋值给 b);当 b = a++ 时,先赋值(赋值给 b),再自增(自己增加 1)。也就是,++a 输出的是 a+1 的值,a++输出的是 a 值。

用一句口诀就是:“符号在前就先加/减,符号在后就后加/减”。

int i  = 1;
i = i++;
System.out.println(i);

答案是1。对于JVM而言,它对自增运算的处理,是会先定义一个临时变量来接收i的值,然后进行自增运算,最后又将临时变量赋给了值为2的i,所以最后的结果为1。

int i = 1;
int temp = i;
i++;
i = temp;
System.out.println(i);
int count = 0;
for(int i = 0;i < 100;i++)
{
    count = count++;
}
System.out.println("count = "+count);

答案是0。

和上面的题目一样的道理,同样是用了临时变量,count实际是等于临时变量的值。

6、为什么Integer a=100,b=100时候a==b返回true,而Integer c=1000,d=1000时候c==d返回false?

  • Integer a=100 实际上是执行了 Integer i = Integer.valueOf(100)的操作,Integer类型的范围是-128~127,当满足条件时会放入缓存空间中。
  • c=1000不在-128~127的范围内,则会开辟新的内存地址。所以c==d返回为false
public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

7、用最有效率的方法计算2乘以8?

2<<3,位运算,数字的二进制位左移三位相当于乘以2的三次方。

8、&和&&区别,||与|的区别

  1. &&与&区别:两者都表示“与”运算,但是&&运算符第一个表达式不成立的话,后面的表达式不运算,直接返回。而&对所有表达式都得判断
  2. || 与|区别:两者都表示“或”运算,但是||运算符第一个表达式成立的话,后面的表达式不运算,直接返回。而|对所有表达式都得判断


相关文章
|
移动开发 JavaScript 前端开发
|
1月前
|
存储 编解码 运维
2026年阿里云轻量应用服务器配置价格表与性能测评
阿里云轻量应用服务器是面向入门级用户、个人开发者及小微企业的一站式云服务产品,主打**开箱即用、极简运维、高性价比**,整合计算、存储、网络资源于一体,无需复杂配置即可快速部署应用。2026年产品全面升级,所有规格默认配备**200M峰值带宽+不限流量**,彻底告别流量焦虑,同时提供丰富的应用镜像与简化控制台,大幅降低云计算使用门槛。
533 0
|
1月前
|
存储 人工智能 网络安全
阿里云域名类活动参考:com、cn、net等注册,15元AI建站、注册域名送企业邮箱等活动内容解析
2026年阿里云万网域名活动参考:15元AI建站套餐(含.CN域名+SSL+备案,最低15元/月);.net注册低至39元(需同前缀.com已注满5天);每周三域名转入特惠(.com批量转入低至76元);.cn批量注册低至19元/首年(量大可至19元);.com注册低至35元(需同前缀国别域满7天);注册.com/.net域名送价值600元企业邮箱。活动覆盖注册、转入、批量采购、建站全链路,个人与企业均可按需组合,有效降低品牌建设与上云成本。
|
3月前
|
机器学习/深度学习 数据采集 算法
大模型应用:K-Means/LDA + 千问大模型:无监督文本自动打标完整方案.85
本文介绍“聚类算法+大模型”无监督自动打标方案:先用K-Means/LDA对海量无标签文本(如电商评论、客服工单)自动分组,再由大模型为每簇生成可理解的业务标签与语义解释,实现从“类1/类2”到“物流慢”“价格争议”等高价值洞察的跃迁,显著降本增效。
579 6
|
2月前
|
人工智能 决策智能
如果你也不想打一辈子工---那就看看我的转行经历
普通人转行AI产品经理的真实经历:从流水线到15K+高薪岗位。2026年就业承压,我靠AIPM认证(CAIE颁发)系统掌握AI产品全链路能力,零基础逆袭。厂哥厂姐、传统岗、应届生等皆可入局,大厂已将其列为招聘“隐形门槛”。选对方向,比埋头苦干更关键!
|
Windows
Windows 10下Markdown不能显示预览
Windows 10下Markdown不能显示预览 结局办法 下载awesomium的SDK,安装后重启Markdown即可 实测最新版本的SDK不行,建议安装1.
1159 0
|
人工智能 搜索推荐 物联网
被鹅厂最新开源AI绘画工具PhotoMaker圈粉了,多风格头像生成器就靠它了!
被鹅厂最新开源AI绘画工具PhotoMaker圈粉了,多风格头像生成器就靠它了!
835 1
推荐一个Mac上的软件卸载工具
上一篇推文,强哥讲述了如何处理Mac上V2rayU闪退的问题,整个过程可以说是既煎熬又痛苦。前期的重启、卸载、重安等步骤就如盲人摸象一样毫无章法可言,完全体现不出任何水准。
推荐一个Mac上的软件卸载工具
|
机器学习/深度学习 Ubuntu Java
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(1)
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(1)
3084 0
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(1)
|
Java Go 开发者
【阿里云镜像】下载并安装Go环境
【阿里云镜像】下载并安装Go环境
1659 0
【阿里云镜像】下载并安装Go环境