您的位置:首页 > 编程语言 > Java开发

JAVA基础回顾一

2016-12-01 22:34 169 查看
JAVA基础一
JAVA的基础部分, 我们学习JAVA主要学习它的基本语法/类相关的语法, 以及内部类的语法, JAVA的面向对象,异常,线程, 集合语法,i/o的用法,等等.
在JAVA中还必须学习其中的:
保留字: True , False, null , goto , const, java
inner, outer, var,其中const和goto被保留但未被使用.
java中保留字的含义是现有的java版本尚未使用, 但以后的版本可能会作为关键字使用.
关键字: abstract , assert , boolean ,  break   ,
byte , case   , catch   ,  char    ,
class , const  , contnue ,  default ,
do   , double , else    ,  enum    ,
extends , final  , finally ,  float   ,
for    ,  if    ,implements, import  ,
instanceof , int    ,interface , long    ,
native   , new    , package  , private ,
protected, public , return   , short   ,
static   ,strictfp , super   , switch  ,
synchronized,this    ,  throw   , throws  ,
try     , void   ,   while  ,  ......
在JAVA中, 一个源文件中是否可以包含多个类?(不是内部类)?有什么限制?


可以有多个类, 但是只能有一个public公共的类, 并且public的类名必须与文件名相同!

Java有没有goto?

java中的保留字, 但是现在没有在java中使用.

& 与&&的区别?

&和&&都可以用作逻辑与的运算符, 表示逻辑与(and), 当运算符两边的表达式的结果都是true时候, 整个运算结果才为true,否则, 只要有一方为false,则结果为false.

&&还具有短路的功能, 即如果第一个表达式为false, 则不计算第二个表达式, (例如,if(str != null && !str.equals(“”))表达式,当str为null时, 后面的表达式就不会执行, 所以不会出现NullPointException如果将&&改为&, 则会抛出Nullpointexception异常,

&还可以用作位运算符, 当&操作符两边的表达式,不是一个boolean类型时,&表示按位与操作, 我们通常使用 0x0f来与一个整数进行&运算, 来获取整数的最低4个bit位./

Switch语句能否作用在byte上,能否作用在long上, 能否在String上.?

在java中如何结束一个循环,用break结束跳出循环. 整数表达式可以是int基本类型或者Integer包装类型, 由于, byte,short, char都可以隐含转化int, 所以,这个类型已经这些类型的包装类型也是可以的, 显然. long和String类型都不符合, switch的语法规范, 并且不能隐式转换 成int类型, 所以, 他们不能作用switch语句.

Short S1 =1 ; S1 = S1 +1;有什么错? short s1 = 1; s1 +=1;有什么错?

对于 short s1 = 1; s1 = s1+1;由于s1 +1 运算时候会自动提升表达式类型, 所以结果是int型, 在赋值给short类型的s1时, 编译器将报告需要强制转换类型错误/

对于 short s1 = 1 ; s1+=1;由于,+=是java语言规定的运算符, java编译器会对它进行特殊处理, 因此可以正确编译.

char类型变量能不能存贮一个中文汉字?为什么?

char类型变量是用来存储Unicode编码的字符的, unicodebianma字符集中包含了汉字, 所以, char型变量中可以存储汉字.不过如果某个特殊的汉字,没有被包含unicode编码字符集中, 那么, 这个char型变量中就不能存储这个特殊汉字, 补充说明, unicode编码占用, 两个字节, 所以char类型的变量也是占用两个字节.

用最优效率的方法算出2乘以8等于几?

2<<3, 因为将一个数左移n次方, 那么一个数乘以8只要将其左移3位即可,

使用final关键字修饰的一个变量, 是引用不能变,还是引用的对象不能变?

使用final关键字修饰的一个变量时,是指引用变量不变, 引用变量所指向的对象中的内容还是可以改变的, 例如,Final StringBuffer a = new StringBuffer(“immutable”);

执行如下语句将报告编译期错误:

a = new StringBuffer(“”);

但是, 执行如下的语句则可以通过编译:

a.append(“broken!”);

有人在定义方法的参数时, 可能想采用如下形式来阻止方法内部修改传进来的参数对象:public void method(final StringBuffer param){

}实际上, 这是办不到的. 在该方法内部仍然可以增加如下代码来修改参数对象:param.append(“a”);

在Java中有符号”==”和equals方法究竟有何区别?

“==”操作符专门用来比较两个变量是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, 要比较两个基本类型的数据或两个引用变量是否相等, 只能用==操作符!

如果一个变量指向的数据是对象类型的, 那么, 这时候涉及了两块内存, 对象本身占用,一块内存(堆内存)变量也占用一块内存, 例如,object obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址,对于指向对象类型的变量, 如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等, 这时候就需要用==来比较.

equals方法是用于比较两个独立对象的内容是否相同, 就好比去比较两个人的长相是否相同, 它比较的两个对象时独立的,例如,对于下面的代码:

String a = new String(“foo”);

String b = new String(“foo”);

两条new语句创建了两个对象,然后用a,b这两个变量分别指向其中一个对象, 这是两个不同的对象, 他们的首地址是不同的, 即a和b中存储的数值是不相同的, 所以,表达式a==b将返回false, 二这两个对象中的内容是相同的, 所以表达式a equals(b)将返回true;在实际开发中, 我们经常要比较传递进来的字符串的内容是否相等, 例如,Stringinput = input.equals(quit);许多人稍不注意,就使用==进行比较了, 这是错误的. 记住, 字符串的比较基本上都是使用equals方法.

如果一个类没有自己定义equlas方法, 那么它将继承Object类的equals方法, object类的equals方法的实现代码如下:

boolean equals(Object o){

return this ==o;}

这说明,如果一个类没有自己定义的equals方法,他默认的equals方法就是使用==操作符, 也是在两个变量指向的对象是否是同一对象, 这时候使用equals和使用==会得到同样的结果, 如果比较的是两个独立的对象则总返回false. 如果你编写的类希望能够比较该类穿件的两个势力对象的内容是否相同, 那么你必须覆盖equals方法,由自己写代码来决定在什么情况即可认为两个对象的内容是相同的.

由于最近在找工作, 所以也在重新学习整理在JAVA中的一些基础知识,所以,后续的更新也会坚持到找到工作以后, 养成一个长期写博客的习惯!让我们一起见证自己.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java基础一