Java--数据类型的基础知识【含面试题】

常量

A:什么是常量?
  常量就是在程序执行过程中其值不变的值。
B:Java中常量的分类:
  字面型常量 和 自定义常量。
C:字面值常量的分类:
  整数常量,即所有整数,例如 1,2,3
  小数常量,即所有小数,例如 1.1 2.23
  字符串常量,其值用双引号括起来,例如 "java"
  字符常量,其值用单引号括起来,例如'a'
  布尔常量,只有true和false
  空常量,null

变量

A:什么是变量?
  变量就是其值可以发生变化的
B:变量命名的规则是什么?
  数据类型 变量名=值;   例如 int a=1;
C:为什么要使用变量?
  这样可以定义同一个类型的值,一直使用

数据类型

A:Java中有哪几种数据类型?
  基本数据类型 和 引用数据类型
B:基本数据类型:
              byte  short  int  long  float  double  char  bool
字节数        1       2     4     8       4     8      2     1
 注意,整数默认的类型是int型,小数默认是double型
C:引用数据类型:
  String 和数组,类,接口

隐式类型转换

在java中不同类型的数据进行运算时会进行隐式类型转换
例如定义了两个变量:
 int a=1;
 byte b=2;
 int c=a+b;
那么该程序在编译到第三行时默认将byte类型变量b转换为inte类型进行运算。
 最后的结果是c=3
那么如果把c改为是byte类型的变量呢?
改成byte类型后将会报错,这是因为,byte类型在运算时会默认转化为int类
型,而接受a和b的变量c是byte类型,所以会出现错误。


 注意!byte short char在进行运算时都会默认转换为int类型,例如
  int a=1; char b='a';
  System.out.println(1+b);
  此时输出的值是98,因为a的所对应的ASC||值是97

强制类型转换

A:强制转换的格式
	 目标数据类型 变量名=(目标数据类型)(被转换的数据);
	 但是最好不要使用强制类型转换,因为可能会造成精度损失。
B:演示:
   int a=1;byte b=2;
   byte c=(byte)(a+b);

面试题之变量相加和常量相加的区别

A:案例演示
	面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
	byte b1 = 3;
	byte b2 = 4;
	byte b3 = b1 + b2;
	byte b4 = 3 + 4;
答:有问题!程序的第三行会报错,因为b1和b2是byte型,在进行运算时会
默认转换为int类型,而接受赋值的b3是byte类型,所以会报错。
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
    可以,因为java中的中文字符采用Unicode编码,其一个汉字由两个字符
构成,而char型变量也存储了两个字符,所以可以存储。

字符和字符串参与运算

A:案例演示
	System.out.println('a');
	System.out.println('a' + 1);
第一行的结果是a
第二行的结果是98
   原因:第一行代码输出的就是char型变量,所以就是字符a;
        第二行是char型变量和int型变量进行运算,'a'会转换为int类
        型,即97,所以最后结果是98。
B:案例演示
	System.out.println("hello" + 'a' + 1);
	System.out.println('a' + 1 + "hello");
第一行的结果是helloa1
第二行的结果是98hello
   原因:第一行最左边是字符串类型,所以+的作用是连接的作用
        第二行先进行'a'+1,'a'将转换为int类型,结果是98,98再和hello
 连接。
C:+在有字符串参与中被称为字符串连接符
		System.out.println("1+1="+1+1);
		System.out.println(1+1+"=1+1");
第一行的结果是1+1=11
第二行的结果是2=1+1
   原因:第一行最左边是字符串,所以+是连接的作用
         第二行先进行1+1的运算结果是2,再和后边的字符串连接。
  
***总结:当有字符串常量参与运算时,+的作用是连接***

算术运算符++和- -的用法和练习

A:++ --运算符的作用是进行自增1和自减1
  案例演示:求a、b、c的值?
  int a = 10;
	int b = 10;
	int c = 10;
    
    a = b++;//把b的值=10先赋给a,b再加1,此时a=10,b=11
	c = --a;//先给a的值减1,然后赋给c,此时c=9,a=9
	b = ++a;//先给a的值加1,再把a的值赋给b,此时a=10,b=10;
	a = c--;//先把c的值赋给a,然后c再减1,此时c=8,a=9
	
	***a=9 b=10 c=8***

  B:案例演示
	请分别计算出x,y的值?
	
	int x = 4;
	int y = (x++) + (++x) + (x*10);//x++和++x的括号不是计算优先级。
	//只是为了方便运算
                
    ***x=6  y=70***

赋值运算符的面试题

A:案例演示
   面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
   short s=1;
   s = s+1;
   这一部分有问题,因为short类型的变量在参与运算时会自动转换为int
类型,而接受赋值的变量s还是short类型,所以编译错误。
   short s=1;
   s+=1;
   这一部分不会出现问题,其实它还是s=s+1,但是它会自动强制类型转换
即,short s=(short)(s+1);

你可能感兴趣的:(Java--数据类型的基础知识【含面试题】)