java基础知识第一篇

1,一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

  答:是可以包含多个类的,但是只能有一个public类这个类名需要和文件名相同,如果.java 文件有多个非public类那么文件名可以随意命名,编译时产生多个单独的.class文件,运行的时候需要进行选择。

      包含多个类,但只能有一个public类,可包含final类,abstract类,package类

每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息

2,Java有没有goto?

 答:java中有goto,只是作为保留字,以后可能会用到,现在没有用到,goto一般是在c语言中使用跳到指定的方法里面。

3,简述&和&&的区别

 答:

相同点:

两者都表示逻辑运算与(and),if判断的条件中两边都为true,则条件为true,若有一个为false,则条件为false。

不同点:

&&  这个 符号是 第一个变量 false,后面的 ++y 是不执行,& 这个 符号 是 两个 变量 都执行后 与操作的这点很重要,(解释下面的原因)

有时候与发现if(str==null&&str.equals("33"))与if(str==null&str.equals("33")),第二个可能会报空指针也是这个原因,另外网上一片一片的说一个问题If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长,这个让你看了会很茫然,其实这个就是因为也是因为上面的原因造成的


4,在JAVA中如何跳出当前的多重嵌套循环?

     有三种方式,这个比较简单就不举例子了

     第一个和第二个有异曲同工之妙

     第一个:就是在循环处加一个标识符(ok),若要结束循环则在循环处break ok 即可,这种代码看起来不优雅

     第二个:就是我经常用的一种方式,在循环外声明一个变量,通过在循环结构里面改变这个变量值,控制程序的下一个步骤,然后直接break;

   第三个:直接跑出异常,这个简单粗暴一般也不用,程序显得更加小白

5,switch语句能否作用在byte上,能否作用在long上,能否作用在String上?这点有理解的没,我也是背,有理解的请给留个言,告知下原因

* 基本类型的包装类(如:Character、Byte、Short、Integer)

 * switch可作用于char byte short int

 * switch可作用于char byte short int对应的包装类

 * switch不可作用于long double float boolean,包括他们的包装类

 * switch中可以是字符串类型,String(jdk1.7之后才可以作用在string上)

 * switch中可以是枚举类型

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

答:char型变量可以存储一个汉字,因为char存储的是unicode编码,unicode编码中包含了中文,但一些特殊的汉字并不在uincode编码中,所以有些特殊的汉字存储不了char,char类型是两个字节

7,用最有效率的方法算出2乘以8等於几?

答:2<<3,

计算机只识别1和0,所以最底层的是对1和0进行操作,所以2乘以8,我们将对应的数字转换成二进制,10(2的2禁止)向左移3位,则会变成10000(在后面补三个零),左移的n位指令等于当前数字乘2的n次幂。

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

答:使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的

9,静态变量和实例变量的区别?

答:静态变量为全局共享的用static 修饰,调用放可以直接通过类名去调用静态变量,静态变量不用创建任何实例就会被分配空间。

实例变量不共享 只是在本身的基础上做了相应处理,实例对象需要声明调用方才可以用和被分配内存空间。

10,是否可以从一个static方法内部发出对非static方法的调用?

答:不可以,因为static是属于类的,非static是属于对象的,static 直接调用非static 方法,则无法判断这个方法属于那个对象的,每个对象都不一样,所以不能直接调用非static方法。

11,Integer与int的区别?

答:1,Integer的默认值为null,int 的默认值为0  

2,Interger是int的封装类,int是基本数据类型

3,Interger必须实例话后使用,而int 可以直接使用存储数据

12,Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

答:12 和-11

13,Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

答:Overload和Override的分别是指方法的重载和重写,都是java多态性的表现,Overload是一个类中多种方法的多态性,Overload是父类与子类多态的表现,如果在一个类型定义了多个同名方法但是方法入参数或返回不同这就是重载,Overloaded的方法是不可以改变返回值的类型。

14,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

答:接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体的类也可以有静态的main方法。

在有的答案中说抽象类可以继承具体的类但是具体类中国需要有构造方法,这样说有点模糊

如下图抽象类B 继承实体类A,A中并没有构造方法


为什么可以编译通过呢 ,因为默认编译的时候A类生成了一个public的构造函数



A中加入私有的构造函数编译也是不过的

其实不管是抽象类还是具体类在继承的时候都遵循这个原则。因为java 在调用运行的时候需要给类分配内存空间,这个构造函数的存在就主要为对象分配内存空间。

15,Java中实现多态的机制是什么?

答:多态的实现方式有重载,重写以及父类的引用指向之类。我引用一个比较好的一个图片例子

多态就是同一个接口,使用不同的实例而执行不同操作。

图片来源https://www.runoob.com/java/java-polymorphism.html

关于多态的实现原理,看了好几遍文章,写的云里雾里的,都是从调用过程方法表的读取写起,硬是感觉驴头不对马嘴,希望哪位大神给指点不胜感激,

16,abstractclass和interface语法上有什么区别?

含有 abstract 修饰符 class 即为抽象类,抽象类不能创建实际对象,含有抽象方法的抽象类必须定义为 abstract class。

接口可以说成是一种特殊的抽象类,接口中的所有方法都必须是抽象的,接口中的方法定义默认为 public abstract 类型,接口中的成员产量类型默认为 public static final。

a. 抽象类可以有构造方法,接口中不能有构造方法。

b. 抽象类中可以有普通成员变量,接口中没有普通成员变量。

c. 抽象类中可以包含非抽象普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的方法。

d. 抽象类中的抽象方法的访问权限可以是 public、protected 和(默认类型,虽然 eclipse 不报错,但也不能用,默认类型子类不能继承),接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。

e. 抽象类中可以包含静态方法,在 JDK1.8 之前接口中不能不包含静态方法,JDK1.8 以后可以包含。

f. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问权限可以是任意的,但接口中定义的变量只能是 public static final 类型的,并且默认即为 public static final 类型。

g. 一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类,接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。

17,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

答:都不可以,声明为abstract就是去要子类实现的,子类实现可以是inative 或者synchronized,这些abstract的method都不关心,而static 是不允许被覆盖的,而子类重写就是要覆盖的所以是不允许的。覆盖是基于运行时动态绑定的,而static方法是翻译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

18,内部类可以引用它的包含类的成员吗?有没有什么限制?

答:首先我们知道内部类包含静态内部类,成员内部类,局部内部类和匿名内部类,内部类的作用是什么,平常我们开发中并不经常用到内部类,那为什么会有内部类呢,首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能。

静态内部类引用他的包含类的成员也需要是静态的这点需要主意,

成员内部类可以无条件的访问他的包含类的所有成员包括私有的

局部内部类定义在外围类的方法中的,可以直接访问外围类的所有成员,但是对含有局部类的方法里面的局部变量不能随便访问,需要定义为final才可以访问

19,String s = "Hello";s = s + "world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

答:没有变,重新生成了一个地址对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容