java基础部分

一、java基础数据类型及其运算
1、java8种数据类型:
Byte short int long float double boolean char

2、double类型强制转换成int:

double x z 9.997 ;
int nx = ( int ) Math . round ( x ) ;

这样 , 变量 nx 的值为 9。 强制类型转换通过截断小数部分将浮点值转换为整型 。
如果想对浮点数进行舍人运算 , 以便得到最接近的整数 ( 在很多情况下 , 这种操作更有用 ), 那就需要使用 Math.round
方法 :

double x z 9.997 ;
int nx = ( int ) Math . round ( x ) ;

现在 , 变量 nx 的值为 10。
当调用 round 的时候 , 仍然需要使用强制类型转换 ( int ) 。 其原因
是 round 方法返回的结果为 long 类型 , 由于存在信息丢失的可能性 , 所以只有使用显式的强制类型转换才能够将 long 类型转换成 int 类型 。

3、char相关:什么是码点,什么是代码单元,什么是辅助字符,什么是Unicode的码点代码级别。

4、下面语句为什么报错?

 short s1 = 1;
  s1 = s1 + 1;

(1) 对于 short s1=1;s1=s1+1 来说,在 s1+1 运算时会自动提升表达式的类型为 int,那么将 int 赋予给 short 类型的变量 s1 会出现类型转换错误。
(2)对于 short s1=1;s1+=1 来说 +=是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此可以正确编译。

5、装箱和拆箱
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。
比如:把 int 转化成 Integer,double 转化成 Double,等等。反之就是自动拆箱。
原始类型: boolean,char,byte,short,int,long,float,double
封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

6、重点: Int 与 Integer 区别:
引自:http://www.cnblogs.com/guodongdidi/p/6953217.html
java基础部分_第1张图片
java基础部分_第2张图片

6、关于位运算:
(1)、位运算符优先级低于比较运算符。
(2)、在进行为运算的过程中,丝毫不区分符号位与数值位,就是单纯的按位相与相或。具体结果类型有参与运算的数值原类型决定。

二、java字符串
1、字符串判等:
一定不要使用 = 运算符检测两个字符串是否相等 ! 这个运算符只能够确定两个字串是否放置在同一个位置上 。 当然 , 如果字符串放置在同一个位置上 , 它们必然相等。 但是 ,完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。
可以使用 equals 方法检测两个字符串是否相等 。 对于表达式 :
s . equals ( t )
如果字符串 s 与字符串 t 相等 , 则返回 true ; 否则 , 返回 false。 需要注意 , s 与 t可以是字符串变量 , 也可以是字符串字面量 。 例如 , 下列表达式是合法的 :
" Hello " . equals ( greeting )
要想检测两个字符串是否相等, 而不区分大小写 , 可以使用 equalsIgnoreCase()方法。
" Hello " . equalsIgnoreCase ( " hello " )
如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相等,但实际上只有字符串常亮是共享的。

2、空串与NULL
空串 " " 是长度为 0 的字符串。 可以调用以下代码检查一个字符串是否为空:
if ( str . length() = 0 )

if ( str . equals ( “” ) )
空串是一个 Java 对象 , 有自己的串长度 ( 0 ) 和内容 ( 空 )。 不过 , String变量还可以存放一个特殊的值 , 名为 null , 这表示目前没有任何对象与该变量关联 。要检查一个字符串是否为 null , 要使用以下条件 :
if ( str = = null )
有时要检查一个字符串既不是 null 也不为空串, 这种情况下就需要使用以下条件 :
if ( str ! = null & & str . length() ! = 0 )
首先要检查 str 不为 null。 如果在一个 null 值上调用方法 , 会出现错误。

3、 StringBuilder 类 与 StringBuffer 类区别:
在 JDK 5.0 中引入 StringBuilder 类 。 这个类的前身是 StringBuffer类 ,
其效率稍有些低,但允许采用多线程的方式执行添加或删除字符的操作 U 如果所有字符串在一个单线程中编辑 ( 通常都是这样 ),则应该用 StringBuilder 替代它 。 这两个类的 API是相同的 。

4、String 转出 int 型,判断能不能转?如何转?
可以转,得处理异常 Integer.parseInt(s) 主为NumberFormatException:
(1)当你输入为字母时,也就是内容不是数字时,如 abcd
(2)当你输入为空时
(3)当你输入超出int 上限时 Long.parseLong(“123”)转换为 long

引自博客: https://blog.csdn.net/a772304419/article/details/79723249
java基础部分_第3张图片

三、java数组
1、数组拷贝:
在 Java 中, 允许将一个数组变量拷贝给另一个数组变量。 这时 ,两个变量将引用同一 个数组 :
int[ ] luckyNumbers = small Primes ;
luckyNumbers [ S ] = 12 ; // now small Primes [ 5 ] is also 12
如果希望将一个数组的所有值拷贝到一个新的数组中去 ,就要使用 Arrays 类的 copyOf 方法 :
int [ ] copiedLuckyNumbers = Arrays . copyOf ( luckyNumbers , luckyNumbers . length ) ;
第 2 个参数是新数组的长度 。 这个方法通常用来增加数组的大小 :
luckyNumbers = Arrays . copyOf ( luckyNumbers , 2 * luckyNumbers . length ) ;
如果数组元素是数值型, 那么多余的元素将被赋值为 0 ;
如果数组元素是布尔型, 则将赋值为 false。 相反 , 如果长度小于原始数组的长度 , 则只拷贝最前面的数据元素 。

四、java类与对象、继承
1、super与this引用的区别:
注释 : 有些人认为 super 与 this 引用是类似的概念 , 实际上 , 这样比较并不太恰当 。 这是因为 super 不是一个对象的引用 , 不能将 super 赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字。

2、java-----instanceof与getClass的区别?
instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;

3、Object.equals与Object.hashcode问题:
Object.equals相同hashcode必须相同吗?
Equals 与 hashCode 的定义必须一致 : 如果 x . equals ( y ) 返回 true , 那么 x . hashCode ( ) 就必须与 y . hashCode ( ) 具有相同的值。 例如 ,如果用定义的 Employee . equals 比较雇员的 ID, 那
么 hashCode 方法就需要散列 ID, 而不是雇员的姓名或存储地址 。

**为什么Object.equals相同hashcode相同吗?**回答hashcode必须相同的原因

下面代码哪些输出相同?为什么?

String s = " Ok " ;
StringBuilder sb = new StringBuilder ( s ) ;
System . out . println ( s . hashCode ( ) + " " + sb . hashCode ( ) ) ;
String t = new St ring ( " Ok " ) ;
StringBuilder tb = new StringBuilder ⑴ ;
System . out . pri ntl n ( t . hashCode ( ) + " • ’ + tb . hashCode ( ) )

请注意 , 字符串 s 与 t 拥有相同的散列码, 这是因为字符串的散列码是由内容导出的。 而字符串缓冲 sb 与tb 却有着不同的散列码,这是因为在 StringBuffer 类中没有定义hashCode 方法, 它的散列码是由Object 类的默认 hashCode 方法导出的对象存储地址。如果重新定义 equals 方法, 就必须重新定义hashCode 方法, 以便用户可以将对象插人到散列表中 ( 有关散列表的内容将在第 9 章中讨论 )。hashCode 方法应该返回一个整型数值 ( 也可以是负数 ), 并合理地组合实例域的散列码 ,以便能够让各个不同的对象产生的散列码更加均匀。

4、同一个类的不同对象之间是否可以之间访问彼此的私有域?
可以
给定manage类是employee类的子类,manage对象是否可以访问另一个manage对象的employee类的protected域?
可以
manage对象是否可以访问另一个employee类对象的protected域?
不可以

你可能感兴趣的:(java基础部分)