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. 我们后端代码这样子设置虽然这样子返回的是字符串,但是json字符串也是字符串

    我们后端代码这样子设置虽然这样子返回的是字符串 但是json字符串也是字符串,后端如果想接收的话,直接百度下怎么接收json字符串就行

  2. Ginan-PEA例程下载

    输入以下命令可在Ubuntu系统中进行下载,但受到网络限制并不能有效下载或者下载很慢 python3 scripts/download_examples.py 通过阅读python脚本,可将下载网址拷 ...

  3. debian11命令行安装字体

    一.需要用到三条命令mkfontscale/mkfontdir/fc-cache这三条命令属于两个软件包mkfontscale/mkfontdir属于xfonts-utils包,fc-cache命令属 ...

  4. C++11之线程库

    在 C++11 之前,涉及到多线程问题,都是和平台相关的,比如 Windows 和 Linux 下各有自己的接口,这使得代码的可移植性比较差.C++11 中最重要的特性就是对线程进行支持了,并且可以跨 ...

  5. js实现点击按钮或div显示与隐藏div

    var box = document.getElementById("box"); var btn = document.getElementById("btn" ...

  6. python 金融大数据风控建模实战--基于机器学习

    王青天 孔越编著, 2020年6月第一版 第一章介绍,介绍金融科技fintech是指使用技术提供财务解决方案.人工智能和机器学习技术可以帮助包括欺诈预防.风险管理.客户服务和营销等多个环节的智能化.个 ...

  7. 新建zabbix数据库

    1.安装mysqldnf install -y @mysqlsystemctl start mysqld.servicesystemctl enable mysqld.service初始化mysqlm ...

  8. CART回归树算法

    [题目1] 表1为拖欠贷款人员训练样本数据集,使用CART算法基于该表数据构造决策树模型,并使用表2中测试样本集确定剪枝后的最优子树. 表1 拖欠贷款人员训练样本数据集 编号 房产状况 婚姻情况 年收 ...

  9. mybatis-关联查询3-自关联查询

    一对多的方式处理 查询指定栏目的所有子孙栏目 查询指定栏目及其所有子孙栏目 多对 一的方式处理

  10. python语法中的左值、右值和字符

    位置决定语义 在下面的python代码中,忽略掉语法错误,源码中同样一个单词tsecer在不同的位置有不同的意义 import之后 在import之后的tsecer是作为一个简单的字面字符串来处理:这 ...