1. Java包含哪两大类数据类型?其中基本类型的每种类型的取值范围和默认值分别是多少?请编程验证。

Java 的两大数据类型:

  • 基本类型

  • 引用类

基本数据类型:

整数类型:

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0;
  • 例子:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0 ;
  • 例子:int a = 100000, int b = -200000。

long:

    • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
    • 最小值是 -9,223,372,036,854,775,808(-2^63);
    • 最大值是 9,223,372,036,854,775,807(2^63 -1);
    • 这种类型主要使用在需要比较大整数的系统上;
    • 默认值是 0L;
    • 例子: long a = 100000L,Long b = -200000L。
      "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

浮点类型:

float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f;
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

double:

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
  • 浮点数的默认类型为 double 类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d;
  • 例子:

    double   d1  = 7D ;
    double d2 = 7.;
    double d3 = 8.0;
    double d4 = 8.D;
    double d5 = 12.9867;

    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

字符类型:

char:

  • char 类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = 'A';。

布尔类型:

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false;
  • 例子:boolean one = true。

2. Java在什么情况会发生整型溢出?请举例说明,并给出解决方案。

一个整形数据类型的数值超过了该类型的取值范围时会发生整形溢出。

举例:

public class test {
public static void main(String[] args){
int i =128;
byte b = (byte)i;
System.out.println(b);
}
}

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

解决方法:按照符合相应数据类型的取值范围进行赋值或转换。

3. Java基本类型的包装类分别是哪些?其高频区间数据缓存范围分别是什么?请选择一种包装类型编程验证其数据缓存特性。

基本数据类型 对应的包装类 高频区间数据缓存范围
char Character 0~127
byte Byte -128~127
short Short -128~127
int Integer -128~127
long Long -128~127
float Float
double Double
boolean Boolean 使用静态final,就会返回静态值

4.什么是自动装箱,什么是自动拆箱,请举例说明。

自动装箱:将基本类型用它们对应的引用类型包装起来

自动拆箱:将包装类型转换为基本数据类型

实例化一个对象,
Test test = new Test(参数);
而包装类,可以这么写:
Integer a = 100; 这是自动装箱;
int b =a ; 这是自动拆箱

5. int与Integer有什么区别,它们之间的相互转化是怎样的?

区别:
int是基本数据类型,int变量存储的是数值。Integer是引用类型,实际是一个对象,Integer存储的是引用对象的地址。
转化:
(1).基本数据类型转包装类对象用构造方法
Integer vari=new Integer(5)
(2).包装类对象转基本数据类型要调用该对象的对应方法
调用intValue()方法

6. 逻辑运算符&和&&的区别是什么?逻辑运算符&与位运算符&的区别是什么?请分别举例说明

逻辑运算符&&和&的区别
&&和&这两个逻辑运算符是使用在关系条件表达式当中,&&连接的表达式中,从左往右依次判断执行,当执行结果为false的时候,后面的表达式就不执行了。&连接的表达式中,也是从左往右依次执行,当执行结果为false的时候,后面的表达式要继续执行到结束。因此,使用&&连接的表达式执行效率相对于&在某些情况下要快一些。

int a=1,b=2;  //定义两个整形变量,分别赋值为1、2

if(a==2&&b>a&&++a==b)  //条件表达式的值是false,当判断a==2为false时,后面的b>a和++a==b就不执行了,a的值为1

if(a==2&b>a&++a==b)      //条件表达式的值是false,当判断a==2为false时,后面的b>a和++a==b继续执行,a的值为2

逻辑运算符&和位运算符&区别
位运算符&:用于位运算,如果相对应位都是1,则结果为1,否则为0;
例如:假设整数变量A的值为60和变量B的值为13。即A = 0011 1100
B = 0000 1101。
则(A&B),得到12,即0000 1100。
逻辑运算符&:当&两侧的值都为真时,结果才为真,
例如:
int i = 5,j = 3;则(++i=2)&(j++=4)的结果为false:
先判断++i=2是否成立,结果为false,继续判断下一个表达式是否成立,j++=4,该表达式成立。但是&逻辑运算符要求两侧的值都为真时,结果才为真。
因为JAVA逻辑运算符两侧只能跟表达式,所以二者符号可以一致。

7. Java语言中可以采用什么语句跳出多重循环?请举例说明

(1).break语句
break用于switch语句的是结束一个switch语句。
break在循环语句中的作用是结束当前所在的循环语句。
使用break可以跳出循环,默认情况下是跳出最里层的循环,假如我们要跳出多层循环怎么办呢,Java替我们已经做好了这一点,就是用 ,在 break 后面加上标号,当符合 break 条件时,程序就会跳到规定的循环处。
e.g.

first: 
for (int i = 0; i <5 ; i++) {
    second:
    for (int j = 0; j <4 ; j++) {
        for (int k = 0; k < 3; k++) {
            if(k==2) break first;//跳出first循环
            if(k==3) break second;//跳出second循环
        }
 
    }

(2).continue语句
continue语句只能用于循环结构中,其作用是是使循环短路,也就是说不跳出当前循环,结束本次循环(结束当前循环),执行下一轮循环。
continue语句也有标号的用法。
e.g.

public void continueLabelTest(){
     outer:
      for(int i = 0; i<5; i++){
          for(int j = 0; j<6; j++){
              if(j == 4){
                  continue outer;
              }
              System.out.println(j);
          }
          System.out.println("test");
      }
      System.out.println("finish");
  }

(3).return语句
与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。
e.g.

public class Test {
    public static void main(String[] args) {
        for(int i=0;i<10;++i) {
            for(int j=0;j<10;++j){
                System.out.println(j);
                if(j==5)
                    return;// 直接结束整个函数返回结果,后续代码自然不再执行
            }
        }
    }
}

我的第二次JAVA作业的更多相关文章

  1. 第二次JAVA作业

    1 2 3 4

  2. 初识Java作业

    初识Java作业 一.    填空题 Java技术按照用途不同分为三大版本,分别是JavaSE.     javaEE       和JavaMe Java虚拟机就是一个虚拟的用于执行  .class ...

  3. 2016福州大学软件工程第二次团队作业——预则立&&他山之石成绩统计

    第二次团队作业--预则立&&他山之石成绩统计结果如下: T:团队成绩 P:个人贡献比 T+P:折算个人成绩,计算公式为T+T/15*团队人数*P 学号 组别 Team P T+P 03 ...

  4. 第五次Java作业

    作业一: 文件显示列表框. 增加了下拉式组合框,text区域设置颜色为红色. import javax.swing.*; import java.awt.*; import java.io.File; ...

  5. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  6. 关于Axure RP软件的介绍——软件工程实践第二次个人作业

    关于Axure RP软件的介绍——软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...

  7. Java作业:第四次过程性考核 ——长春职业技术学院 16级网络工程

    Java作业:第四次过程性考核 码云链接:https://gitee.com/SoridoD/java_kaohe4    (时间匆忙没打注释,真有急事) (客户端和服务器会自动创建表,所以没有sql ...

  8. Java作业:第一次过程性考核 ——长春职业技术学院 16级网络工程

    Java作业:第一次过程性考核 ••<结构化程序设计>•• 考核目标:初步了解Java基本语法规则,学习结构化程序设计思想. 码云链接:https://gitee.com/SoridoD/ ...

  9. 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域  

  10. C高级第二次PTA作业

    6-7 删除字符串中数字字符 1.设计思路: (1)算法: 第一步:定义一个字符数组item,输入一个字符串赋给字符数组item.调用函数delnum, 第二步:在函数delnum中定义循环变量i=0 ...

随机推荐

  1. FSL--fsleyes建立软连接方法

    在使用conda下载完fsleyes后,还是显示not found ,无法使用怎么办? 1.首先在/anaconda/envs/fslpython/bin/  中搜索 fsleyes  确定已经下载好 ...

  2. SQL面试题,工作整理sql

    一.数据库和算法   表名:student,name,course,score    张青  语文  72    王华  数学72    张华  英语 81    张青 物理 671.用sql查询出& ...

  3. git多分支-git远程仓库-ssh方式连接远程仓库-协同开发-冲突解决-线上分支合并-远程仓库回滚

    目录 git多分支-git远程仓库-ssh方式连接远程仓库-协同开发-冲突解决-线上分支合并-远程仓库回滚 昨日内容回顾 今日内容概要 今日内容详细 1 git多分支 2 git远程仓库 3 ssh方 ...

  4. vue 中 表单数据为数组,v-for 循环表单数据

    element-ui 中,表单数据一般为对象,但是也有是数组的情况,比如上面图示:账号和密码可以是多个,点击添加会增加一条,点击删除会删除一条 表单数据为 form:{ accounts:[ { ac ...

  5. java向上转型知识点收录

    package tex2polymorphism; /*总结如下: * 对于多态,可以总结它为: 一.使用父类类型的引用指向子类的对象: 二.该引用只能调用父类中定义的方法和变量: 三.如果子类中重写 ...

  6. 微信小程序之配置业务域名踩过的坑

    1.在配置业务域名弹窗中保存按钮一直加载状态,无法保存则刷新当前界面后重新扫码打开该弹窗.2.检验文件一定要放在目标服务器域名下前端文件夹中,否则(放在后台代码文件夹中)访问不到地址.

  7. 攻防世界-unseping(序列化,Bash shell)

    这是一道序列化的题目,结合了Linux Bash shell知识 一.基础知识点 序列化    序列化的概念:    序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式 ...

  8. easyui combobox两种不同的数据加载方式

    1.通过http访问加载数据. $('#XXXId').combobox({ url: httpUrl, valueField: 'code', textField: 'name', });2.通过j ...

  9. csr_matrix与ndarray类型互转

    ndarry 转 csr_matrix>>> import numpy as np>>> import scipy.sparse >>> my_m ...

  10. servlet和spring框架的关系

    1.Servlet是什么? servlet就是一个Java接口,是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能. 由其他内部厂商如tomcat,JBoss内部实现web的功能. ...