2. 数据类型

2.1 什么是注释?作用是什么?注释的分类以及表现形式?

注释就是对编写的Java代码进行解释说明。写注释可以很好的说明所写Java代码的含义,方便日后查看,同样也可以更好的让别人读懂所写的Java代码的含义。注释分为单行注释、多行注释和文档注释:

单行注释:

//    这是单行注释的格式     通常出现在被注释代码的上面或者后面
多行注释:
/*
这是多行注释的格式,可以包含单行注释
        通常出现在被注释代码的上面
*/
文档注释:
/**
这是文档注释的格式
        通常出现在被注释代码的上面
        通过javadoc命令转换成独立于程序以外的一个注释文件[通常不操作]
*/

2.2标识符是什么?有什么具体规则?

标识符是编写Java代码时用来给代码中的元素起名字的字符串,规则如下:

     1.可以用数字、字母、_、$组成,数字不能开头;

     2.不能带有空格;

     3.严格区分大小写;

     4.不能是关键字;

补充:Java中元素基本命名规范

     类---满足标识符规范,类名首字母大写

     方法---满足标识符规范,通常以动词开头,首字母小写,从第二个单词开始首字母大写

     变量---满足标识符规范,名称中所有字母小写

2.3什么是关键字?常用关键字有哪些?

       java中为一些单词赋予了特殊含义,这些被赋予特殊含义的单词就是关键字。标识符不能是关键字。

       常用的关键字:class  public  private  this  new  return  void......

2.4什么是变量?变量的作用是什么?变量的组成?

变量就是在Java程序中随时都可能变化的数据,变量是用来保存具体的数据值,并且限制了数据在内存中保存的位置和大小。

变量由四部分组成:

     1.数据类型---决定内存空间

     2.变量名称---自定义的,只要符合标识符的规则

     3.初始值---默认值

     4.作用域---有效范围

2.5 Java中的基本数据类型有几种?如何表示,取值范围,注意事项?

分为四大类八种:

     整数型:byte(字节型)、short(短整型)、int(整型)、long(长整型)

     浮点型:float(单精度浮点型)、double(双精度浮点型)

     字符型:char

     布尔型:boolean

byte(字节型):取值范围是(-2^7)~(2^7),默认值为0,超出范围会出错

short(短整型):取值范围是(-2^15)~(2^15-1),默认值为0,超出范围会出错

int(整形):取值范围是(-2^31)~(2^31-1),默认值为0,超出范围会出错

long(长整型):取值范围是(-2^63)~(2^63-1),默认值为0,超出范围会出错,赋值时需要在末尾添加"l"或"L"表示

float(单精度浮点型):精度是7-8位有效数字,在赋值的时候需要“f”/”F”作为后缀,否则以双精度浮点型对待

double(双精度浮点型):精度是15-16位有效数字,在赋值的时候可以有”D”/”d”作为后缀,也可以不同加,不带后缀的小数都是double类型。

char(字符型):取值范围是0~65535,需要单引号包围

boolean(布尔型):值只有true或者false

2.6 基本数据类型之间的转换以及注意事项?

基本数据类型之间的转换布尔型(boolean)是不参与的

精度排序(小--->大):byte--->short--->char--->int--->long--->float--->double

低精度转换成高精度:隐式数据类型转换

转换时不需要做修改,直接将低精度的数据类型的变量,复制给高精度的数据类型变量,因为高精度的数据类型的内存空间完全可以包含低精度的数据类型所占的内存空间

高精度转换成低精度:显示数据类型转换/强制数据类型转换

转换时需要对数据做修改,修改格式如下:

       低精度的数据类型  变量名称 = (低精度的数据类型)高精度数据类型的变量

因为低精度的数据类型所占的内存空间不包含高精度数据类型的内存空间,所以在转换的时候需要修改代码强制低精度往高精度转,造成的结果就是在转换的过程中会发生精度的损失。

char与int数据类型之间的转换

        char--字符型【0~65535】的取值范围被int型的取值范围包括,所以我们就可以进行char型与int型之间的类型转换。

char类型转换成int类型需要隐式类型转换

int类型转换成char类型需要显式类型转换

2.7 什么是数组?如何定义?如何创建?如何赋值?如何取值?有哪些属性?

数组就是统一数据类型的数据按照顺序进行排列所组成的复合数据类型。

定义数组有两种方式:

1.数据类型 数组名称[];

2.数据类型 []数组名称;

创建数组的方式: 数组名称 = new 数据类型[空间大小];

可以将定义与创建放在一起:

1. 数据类型 数组名称[] = new 数据类型[空间大小];

2. 数据类型 []数组名称 = new 数据类型[空间大小];

数组赋值分为两种,逐个赋值和直接赋值:

逐个赋值[需要数组下标,从0开始]---数组名称[下标] = 数据值/变量;

超过数组空间大小会报错:java.lang.ArrayIndexOutOfBoundsException

直接赋值[创建数组时赋值]---数据类型 数组名称[] = {数据值};

从数组中取值: 数组名称[下标]

数组的length属性:得到数组的空间大小(与下标不同)

2.8 认识Arrays数组的帮助类?

Arrays是一个数组的帮助类,其中包含了很多静态的方法,一般和ArrayList集合一起使用,常用方法有三种:

sort()方法,用来对指定数组中的元素进行排序(元素值从小到大进行排序)

toString()方法,用来返回指定数组元素内容的字符串形式

binarySearch()方法,在指定数组中,查找给定元素值出现的位置。若没有查询到,返回位置为-1。要求该数组必须是个有序的数组。

2.9 基本数据类型与复合数据类型之间的区别?

基本数据类型在被创建时,在栈区给其划分一块内存,将数值直接存储在栈区。而引用数据类型在被创建时,首先要在栈区给其引用分配一块内存,而对象的具体信息都存储在堆区中,然后由栈区上面的引用指向堆区中对象的地址。

因为内存分配机制,基本数据类型在运算上是比复合数据类型要快。

2.10 Scanner类的用法?

使用Scanner类需要导入java.util.Scanner的包

创建Scanner类的对象:

     Scanner  对象名称 = new Scanner(System.in);   //System.in是一个输入流,代表标准的键盘输入

Scanner类的一些输入方法:

String  next()-----接收字符串数据

String nextLine()-----接收一行字符串数据

byte nextByte()-----接收字节数据

short nextShort()-----接收短整型数据

int nextInt()-----接收整型数据

long nextLong()-----接收长整型数据

float nextFloat()-----接收单精度浮点型数据

double nextDouble()-----接收双精度浮点型数据

boolean nextBoolean()-----接收布尔型数据