当前位置:网站首页 > Java基础 > 正文

java基础自学知识



java基础知识学习(精选6篇)

篇1:java基础知识学习

Java基础

1.JAVA程序是由1个或者N个CLASS组成的程序

2.编写---javac进行编译------java进行执行

3.类名的命名:规范:第一个字母要大写 第一字母必须是字母 下划线美圆符号 人民币符号//

4.不是第一个字母的话 可以是数字

5.文件名和类名的关系 如果class前面没有public 是可以不一样的 但是如果有的话 必须一样

6.两个BYTE SHORT类型进行加减乘除的时候 返回的结果是int类型

/*

需求:定义一个hello world小程序。

步骤:

1,通过class关键字定义一个类。将代码都编写到该类中。

2,为了保证该的独立运行。在类中定义个主函数。格式public static void main(String[] args)3,保存成一个扩展名为java的文件。

4,在dos控制台中通过javac工具对java文件进行编译。

5,在通过java命令对生成的class文件进行执行。

*/

class Demo//定义一个类。

{

//主函数。

public static void main(String[] args)

{

//输出语句。

System.out.println(“hello haha”);

}

}

6.字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

System.out.println(“5+5”+(5+5));//“5+5=55”

转义字符:通过 来转变后面字母或者符号的含义。

n:换行。

b:退格。相当于backspace。

r:按下回车键。window系统,回车符是由两个字符来表示rn.t:制表符。相当于tab键。

7.if else 结构 简写格式: 变量 =(条件表达式)?表达式1:表达式2;

三元运算符:

好处:可以简化if else代码。

弊端:因为是一个运算符,所以运算完必须要有一个结果。

class OperateDemo

{

public static void main(String[] args)

{

int x= 7;

//逻辑运算符用于连接boolean类型的表达式。

//x>3 & x<6 = true & true = true;

/*

true & true = true;

true & false = false;

false & true = false;

false & false = false;

& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。只有两边都为true,结果为true。

true | true = true;

true | false = true;

false | true = true;

false | false = false;

| : 两边只要有一个为true,结果为true。

只有两边都有false,结果为false。

^ : 异或;就是和|有点不一样。当true ^ true = false;

true ^ true = false;

true ^ false = true;

false ^ true = true;

false ^ false = false;

^ : 两边相同结果是false。

两边不同结果是true。

&和&&的特点:

&:无论左边是true是false。右边都运算。

&&:当左边为false时,右边不运算。

|:两边都参与运算。

||:当左边为true。右边不运算。

int n = 3,m = 8;

System.out.println(“n=”+n+“,m=”+m);

1,通过第三方变量。

/*int temp;temp = n;n = m;m = temp;

2不用第三方变量。= 3 +8;3 = 113;n = n + m;//如果n和m的值非常大,容易超出int范围。m = nm;n = n ^ m;m = n ^ m;//(n^m)^m;n = n ^ m;//n ^(n ^ m)System.out.println(“n=”+n+“,m=”+m);

if和switch语句很像。

具体什么场景下,应用哪个语句呢?

如果判断的具体数值不多,而是符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用

范围更广。

篇2:java基础知识学习

JAVA学习交流群: 在这里给大家整理了一篇JAVA的学习小技巧,希望能给大家带来帮助。

1、byte通常用来进行位运算,位宽度窄,一般不用来计算

2、关键字都是小写的,在eclipse中显示为红色。

3、变量给了缺省的初始值,C语言没给,只给分配了空间,里面的数不确定

4、char的缺省值是ASCII码中第1个

5、运行效率:i++>i+=1>i=i+1

6、布尔值不能进行大小比较,只能进行==比较

7、先算&&再算||。另外&&为短路与的意思。例1:判断以下i的变化。

int i=2,j=3;

boolean b=i>j && i++>2;

System.out.println(i);答案:2

例2:以下在a,b,i不知道的情况下,判断真还是假。((a>b)||((3-2)>2))||(5>2)&&(true||(++i>2))答案:真

8、>>带符号右移,前面移空的位置添加符号位相同的数

0|001 1000 右移两位(正数)

0|000 0110 1|001 1000 右移两位(负数)

1|111 1100

>>>带符号右移,前面移空的位置添加0

9、获得-5到2的随机数

int i;

Random r=new Random();

i=r.nextInt();

// i=Math.abs(i%10)+1;//获得0到10的随机数

i=Math.abs(i%8)-5;//获得-5到-2的随机数

System.out.println(i);

10、数组创建时,大小(内存)可以是前面的变量.可以动态创建数组的大小(内存),创建后就不能再改大小.例:

int t=9;

int[][] jiu;

jiu=new int[t][];

JAVA学习交流群:

11、变量的作用域。

定义的数个变量其实是放在一个栈的结构中,后定义的变量先消失,先定义的变量后消失,作用域比后定义的变量大。

12、.基本数据类型参数的传递是值传递, 引用....................址传递.class Length{ int length;} class People{

void walk(Length length){

length.length=+=2;} public satic void main(String[] args){

Length l=new Length();

l.length=20;

new People().walk(l);

System.out.println(l.length);} }

13、方法的重载,不能通过返回值类型不同来区别,只能通过参数的不同来区别.14、方法或变量加static和

不加static的方法,是类的对象的方法.对象消失,方法消失

加static的方法,是类的方法.对象消失,方法存在.方法的地址是静态的与类绑定

变量和上面也一样.15、静态方法,只能访问类的静态成员和该方法的成员

16、JAVA不支持多重继承,类似一个树,一个类只有一个父类,但可以有多个接口

C++支持多重继承,类似一个网,一个类可以有多个父类

17、子类默认调用了父类无参构造函数.如果父类没有无参构造函数,必须手动重写子类的构造方法,并用super(参数)调用父类中有参构造的方法.例: class People{ private int age;public People(int age){

this.age=age;} } class Doctor extends People{ //不写以下构造方法则出错.public Doctor(){

super(23);}

JAVA学习交流群: //或者

public Doctor(int age){

super(age);} } 解决方法:在写类的有参构造方法时,最好定义个无参的构造方法.18、构造方法调用父类的构造方法super()前不能有其他的语句.19、final可以修饰形式参数,防止被改 例:

void walk(final int length){

}

20、import导入包的理解,重要的事情总要放到前面

21、private与abstract冲突,原因:子类实现(继承)不了接口(抽象类)中被private修饰的成员,但接口(抽象类)中的方法必须要重写,加private就没办法重写了 例:

interface InterfaceTest { int f();private abstract int ff();//此句错误,要去掉private }

22、内部类可以被外部使用,可以访问外部类(宿主类)的privite成员;内部类成员加public也可以被外部访问,但也危险,定义成private外部不能访问此类了(常用).public class OutClass { private int i=2;public class InnerClass{

public int j=i;} }

23、抽象类不用继承也能用 例:

abstract class Out2{ private int i=2;public abstract int f();public static Out2 getInstance(){

return new Inner2();} private static class Inner2 extends Out2{//static

public int f(){

return 2;

} } public static void main(String[] args){

JAVA学习交流群:

Out2 ou=Out2.getInstance();//抽象类不用继承也能用,获得此类的实例

int i=ou.f();

System.out.println(i);} }

24、接口里也可以定义类(内隐类)例:

interface InterfaceTest { int f();class A{

int f(){

return 2;

} } }

25、内部类的使用.类NoNameInnerClass 不用implements实现接口,而用传递进来对象来用接口

interface Inter{ void paint();} public class NoNameInnerClass { public void paint(Inter p){//传递进来对象来用接口

p.paint();} public void func(){

//为了获得对象,定义一个内部类,把此对象做参数

class Paint implements Inter{

public void paint(){

System.out.println(“paint.”);

}

}

Paint p=new Paint();

paint(p);} }

26、内部类的使用.不用类名,直接创建对象,无名内隐类,类名是他实现的接口名字 interface Inter{ void paint();} public class NoNameInnerClass { public void paint(Inter p){//传递进来对象来用接口

p.paint();

JAVA学习交流群: } public void func(){

//直接创建对象,无名内隐类,类名是他实现的接口名字,paint(new Inter(){

public void paint(){

}

});} }

27、单态设计模式。能够创建类的唯一实例。把构造方法定义成private,再创建静态的成员方法getInstance()获得此类唯一实例.例1.public class ChineseTest{

public static void main(String[] args){

Chinese Obj1 = Chinese.getInstance();

Chinese Obj2 = Chinese.getInstance();

System.out.println(Obj1 == Obj2);

} } class Chinese {

private static Chinese objRef = new Chinese();

private Chinese(){

}

public static Chinese getInstance(){

return objRef;

} } 例2:

public class ChineseTest{

public static void main(String[] args){

Chinese Obj1 = Chinese.getInstance();

Chinese Obj2 = Chinese.getInstance();

System.out.println(Obj1 == Obj2);

} } class Chinese {

private static Chinese objRef;

private Chinese(){

} }

JAVA学习交流群:

28、泛型应用

Vector 类后的E代表泛型,用来限制往里面放的数据类型 例:

Vector v=new Vector ();

v.add(“aaa”);

v.add(“bbb”);

System.out.println(v.get(0));

29、如果一个方法可能有异常,则用throw new Exception(“")来抛出异常

如果方法内用throw抛出异常,则此方法头后必须用throws(多个s)声明可能会抛出异常。

如果一个方法头后用throws声明可能会抛出异常,则此方法在用的时候必须用try-catch语句 例:

public class Lx_Yichang { static int div(int x,int y)throws Exception{

if(y==0){

throw new Exception(”除数不能为0!!“);//方法内用throw抛出异常

}else{

return x/y;

} } public static void main(String[] args){

try{//用try-catch语句

int z=0;

z=Lx_Yichang.div(10, 0);

System.out.println(z);

}

catch(Exception ex){

System.out.println(ex.toString());

ex.printStackTrace();

}

finally{

System.out.println(”End!“);

} } }

30、Hashtable类应用,可以通过get(键)或get(hashCode)来获得值内容。import java.util.Hashtable;class PhoneList{ String name;String phoneNumber;public PhoneList(String name,String phoneNumber){

this.name=name;

JAVA学习交流群:

this.phoneNumber=phoneNumber;} } public class HashtableTest { public static void main(String[] args){

//利用泛型

Hashtable hashTable=new Hashtable ();

hashTable.put(”wang0“,new PhoneList(”wang“,”0000000“));

hashTable.put(”wang1“,new PhoneList(”wang“,”“));

hashTable.put(”wang2“,new PhoneList(”wang“,”“));

hashTable.put(”wang3“,new PhoneList(”wang“,”“));

System.out.println(hashTable.get(”wang2“).phoneNumber);

//不利用泛型

Hashtable hash=new Hashtable();

hash.put(”wang0“,new PhoneList(”wang“,”0000000“));

hash.put(”wang1“,new PhoneList(”wang“,”“));

hash.put(”wang2“,new PhoneList(”wang“,”“));

hash.put(”wang3“,new PhoneList(”wang“,”“));

//System.out.println(((PhoneList)hash.get(”wang2“)).phoneNumber);//不用泛型,需要强制类型转换

//强制类型转换时,最好先进行类型判断

Object o=hash.get(”wang2“);

if(o instanceof PhoneList){

System.out.println(((PhoneList)o).phoneNumber);

}

//利用hashcode

Hashtable table=new Hashtable ();

PhoneList p1=new PhoneList(”wang2“,”8“);

table.put(new Integer(p1.hashCode()), p1);

System.out.println(table.get(new Integer(p1.hashCode())).phoneNumber);

} }

31、提供一个关于游戏的简短描述,网页,游戏名称,提供商,金钱初始值等等。这些数据可以置于.jad文件中。

打包后是放在JAR的META-INF文件夹里。用MIDlet类的getAppProperty(String key)来获得其中的值.32、Canvas 的hideNotify()里写暂停的代码。showNotify()写继续游戏的代码。来电话时自动调用hideNotify()。pauseApp也可以实现,但有的手机不支持如Nokia手机

34、运行提示ALERT: java/lang/ClassFormatError: Bad version information.原因

原因:当前编译器的版本过高。

JAVA学习交流群:

解决方法: 编译器的版本不要过高否则有的手机不认,选择编译器方法:点项目右键属性->Java Compiler-> Enable project specific settings打勾,然后选择版本较低的编译器

35、把所有的引用都设置为null才可以变为垃圾

Hero h=new Hero();

Hero h2=h;

h=null;//此时,h并没变为垃圾,因为还有h2指向它,需要把h2也设置为null,h才变为垃圾

h2=null;

36、去掉无用包(ctrl+shift+0).或右键->Source->Organize Imports

37、WTK2.5的安装后,ECLIPSE的设置

Window->Preferences->Device Management->Import->找到WTK的安装路径

38、添加资源文件夹名

在项目上右键->Properties->双击Java Build Path->点Add Foler->在下面的选项中选择update exclusion filters in other source folders to solve nesting,再添入资源文件夹名,如src、res等。

39、添加抽象类、接口中的方法。

例如对继承Canvas类,需要添加protected void keyPressed(int keyCode){}方法时.在代码上右键->Source->选择Override/Implements Methods->在窗口中,对要重写的方法打勾->Ok。

40、在for语句中,第2个循环条件可以和逻辑表达试取与 例:

for(int i=0;i<100 && i%2==0;i++)

41、DataInputStream包装FileInputStream后,底层操作文件,上层按指定格式输出(最易使用)

42、FileInputStream的应用 例:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class PekingFileInputStreamTest1 { public static void main(String[] args){

try {

//在项目根目录里创建文件fileInputStream.txt

File file=new File(”fileInputStream.txt“);

FileOutputStream fout=new FileOutputStream(file);

fout.write(65);

fout.close();//输出到文件完毕后关闭

//开始读

FileInputStream fin=new FileInputStream(”fileInputStream.txt“);8

JAVA学习交流群:

int b=fin.read();

System.out.println(b);

fin.close();

} catch(Exception e){ // TODO: handle exception e.printStackTrace();

} } }

43、利用DataOutputStream包装FileInputStream按指定格式输出 例:

import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.FileInputStream;public class PekingFileInputStreamTest2 { public static void main(String[] args){

try {

//在项目根目录里创建文件fileInputStream.txt

File file=new File(”fileInputStream.txt“);

FileOutputStream fout=new FileOutputStream(file);

//包装下按指定格式输出

DataOutputStream dout=new DataOutputStream(fout);//子类fout做参数传给父类,子类当父类用

dout.writeInt(8793);

dout.writeUTF(”感动中国“);

dout.close();

fout.close();

//开始读

FileInputStream fin=new FileInputStream(”fileInputStream.txt“);

DataInputStream din=new DataInputStream(fin);

int b=din.readInt();

String s=din.readUTF();

System.out.println(b);

System.out.println(s);

din.close();

fin.close();

} catch(Exception e){

e.printStackTrace();

} 9

JAVA学习交流群: } }

44、利用PrintWriter包装三次的例子。

PrintWriter包装OutputStreamWriter,OutputStreamWriter包装FileOutputStream,FileOutputStream包装File import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;public class PekingFileInputStreamTest3 { public static void main(String[] args){

try {

//在项目根目录里创建文件fileInputStream.txt

File file=new File(”fileInputStream.txt“);//

FileOutputStream fout=new FileOutputStream(file);

//

OutputStreamWriter osw=new OutputStreamWriter(fout);//测试字符流//字符流通向字节流的桥梁

//

PrintWriter pw=new PrintWriter(osw);//包装三次

PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file)));

//开始读

pw.println(”窗前名月光,“);

pw.println(”疑是地上霜.“);

pw.println(”抬头望明月,“);

pw.println(”低头思故乡。");

pw.flush();

} catch(Exception e){

e.printStackTrace();

篇3:java基础知识学习

面对大学国内多年大学扩招, 进入大学计算机系的学生成绩逐渐走向一般。尤其是高职院校的计算机系学生, 在面对传统计算机C语言的学习时, 很难理解其中的一些章节, 比如指针 (Pointer) 和递归 (resursion) 算法, 数据结构 (Data Stucture) 。为此很多高校为了迎合学生的水平, 积极的降低课程难度, 甚至提出使用Java语言来代替C语言作为计算机的基础教程, 这样可以节省更多的时间讲解实用性的计算机知识。其实我大学刚毕业不久也有这个想法, 觉得C语言用途没有Java语言来的广, 而且难度不低, 还认为一门工具语言, 越简单越好, 做出的软件的健壮性可靠性越高。其实我的想法也没错, 可不适合在计算机基础阶段将Java语言替换成C语言。

那为什么不选一个简单的Java语言作为入门的基础课程呢, 我们必须权衡利弊, 当然我们不是非要像孔乙己那样说出回字有几种写法才算有难度, 或者对初学者有虐待的心态。下面我列出C语言的一些优势所在。

一) C语言够难

二) C语言更能区分学生的能力

三) C语言会让学生变得勤快

四) C语言更能培养合格的程序员

下面让我们正对上述的几点进行简单轻松的讨论

C语言才够难度, Java在做为基础语言中的难度是远远不够的。大学中我对计算机的兴趣非常偶然, 其实就是一个晚上占据了一个灯光良好的座位, 打算认真做作业的时候, 一位教dbase的老师带着学生进驻教师, 打算清场, 当时急中生智, 就说我也选修那位老师的课程, 在一个小时的听课中发现dbase似乎没那么难, 后来参加考试高分通过, 很容易的通过了。在休息期间请教老师, 被告知如果学好软件开发, 两门课程必须搞定, 一个就是C语言, 一个就是数据结构, 如果过不了这两关, 建议我还是老实的完成我的本专业。后来我花了两个学习才将这两门课程弄出一点头绪。现在想着当年在386机器上调试C语言程序的时候, 突然很佩服自己的毅力。

我见过高中很多英语稍微好点的同学, 可以在中华学习机上用basic编写出很优秀的代码, 那时候让我佩服的不得了。大学毕业后我从化工转到计算机软件开发方面来, 发现很多原本我认为是软件高手的同学在软件编程上没多大建树, 也许是他们没兴趣, 闲聊的时候问起来, 他们大多数被计算机两个入门的基础课程给吓楞了, 一个是C语言, 一个是数据结构。面对大量的指针, 其实都会晕头转向, 不过也许只有这样的难度, 淘汰那些知难而退的人才会留下只对软件开发有兴趣的学员, 或是激起那些学习者的知难而上的斗志。在上个世纪80年代, 会dbase的人是个高级程序员, 到了90年代, 会foxbase或者foxpro的算是个中级程序员, 到了二十一世纪, foxpro的学习者还是很多, java基础自学知识 大部分都转行了, 除了少数毅力鉴定这改用其他语言, 要是不转行或者不改用其他高难度的开发语言和工具, 估计从事foxpro开发的人都饿趴了现在。但是那些从事C语言, 非常轻易的转移到了Java, 或者C++开发, 目前苹果系统IOS上的应用开发其实也是使用C语言的变种Object C。但是对于那些掌握VB和foxpro或者是Delphi的人来说, 转行的难度太高了, 因为他们早就接受了更简单的入门教程, 难以适应难度稍大的业务。许我们可以这么说, 别让基础语言太难, 这样娇惯了学生, 以后让他们转型实在难。人人都这样, 由难转易行, 由易转难止。

别轻易放弃C语言中的指针章节和递归及其数值算法这块内容, 即使有些概念毫无用处, 但是能让你变得头脑灵活, 思维敏捷, 高度的抽象能力和推理能力, 这样才能培养出合格的程序员, 岗位上才能有竞争力, 如果连这个都过不了, 建议这些学生改行去学习哲学, 只有马列主义基本无需很多的推理和思考, 没有了挑战只要在考试之前背一下基本都能过的。Java语言中为了简化和避免用户出错, 省去了指针这类让人头疼的东西, 造成了Java语言过于简单, 这样即使是Java语言考试得了100分, 也许这人根本不知道内存是如何分配的, 递归是如何实现的, 线性链表如何操作, 文件读写是如何进行的。他们还根本不会因为学习了一门语言会加深对计算机体系结构的认识。有人挖空心思的想让Java来代替C语言或者精简C语言来做为基础教程, 这样一来学生只会做最简单的计算机练习题, 花很少的心思就完成课后作业, 如此体贴学生犹如帮学生都把代码模块或者框架做好了让他们来完形填空了。但让老师和学生皆大欢喜, 老师教学效果不错, 学生考试通过, 可是这样学生可否面对困难和挑战呢?

C语言才有区分能力。大学的我最怕的课程就是我自学的C语言和数据结构, 还有数学。因为这三门课程我要认真学习才能在分数榜上列在前头。而其他的课程只要花一点点时间就可以了, 花更多的时间我也很难拿到满分。其他一些课程因为简单, 所以无法区分开来, 这样好坏, 优劣在学生中就无法区分开来。Java中没有了指针, 弱化了递归算法的基本原理, 用集合类来代替传统的数据结构, 让你在学习过程中无法达到思维的深度, 缺少逻辑推理, 归纳演绎, 抽象思考的锻炼, 你没有了课程中被补考重修的心理压力。而且通过多花点时间学习你就可以考试得个优秀, 面对扎堆的优秀学生, 如何区分能力远远成了Java语言C语言的一个难处, 可是C语言, 只要有指针和递归算法里面, 试卷上的分数会因为能力而拉开很大的距离。

学习C语言的学生会很勤快的。因为C语言的类库远远不及Java的类库那么多。要做一个自定义的打印等等都要写下一堆复杂的代码。没有了Java的集合类Collection和集合工具类Collections的便利性, 为了完成一个简单的数据存储你必须自己设计一个数据结构, 实现存储和读取排序之类的操作。在操作过程中学生小心谨慎的使用指针, 认真初始化每个变量。没有了插件的帮忙, 要和其他系统接口你必须自己写下大量的代码, 调试大量的程序, 最后你会发现学生变得勤快, 认真和谨慎。在Java学习中, 太多现成的特性让你非常省力。面向对象OOP代替指针和递归调用, 用封装和继承简化开发流程, 多态和重载让你使用的称心。没有了C语言的难度, Java语言学习没有机会面对心智的挑战, 更会偷懒和松懈。

有些公司招聘的时候很有意思, 总是做题目的时候让人家实现一些算法, 推荐使用Java语言。其实我面对很多新员工面试, 都是推荐让用C语言, 当然可以使用Java语言, 我会对使用VBSript和VB语言者产生一种不良的感觉, 总觉得他们不适合做程序员。如果有面试者在C语言实现过程中做的和Java一样好, 我会举的他同等Java实现者更有潜力, 因为C语言是一门有难度的语言。你见过哪个C语言好的人Java做的不好的, 但是你见过很多Java高手不会C语言的中等难度的练习。公司有时候业务需要, 从Java转移到微软.Net下的C#语言, C语言基础扎实的能在一周内参加实质性的任务了, 而那些会VB, Vbscrit和通Java但是C基础差的人, 半个月后都很难上手。一个C语言扎实的程序员一定是个合格的程序员, 当然反过来说未必成立。基础课程毕竟不是专业课程, 那那些实际的工作技能留给了后续的专业课程来完成或者是培训机构, 企业, 政府。

我在高校还从事一些基础语言教程, 发现很多教学中都强调要让课程变得简单, 其实上Java课程的时候似乎没什么东西好讲的, 不用复杂的算法, 不用遇上讨厌的指针。总不会让我花一节课时来讲解简单变量和封装类的差别了吧, 这种基础教学让底子稍微好点的学生三分之一的时间就掌握了, 那剩下的时间只好打瞌睡了。当然不是说Java不好, 其实在编程应用中Java的地位都是老大地位。我2004年做的domino OA软件使用的是Java来扩展其中的功能, 后来手机应用开发使用J2ME也是Java, 现在的平板开发Android也是Java。虽然是Java的创始者Sun被Oracle并购后, 但也不改这个趋势, 可在高校中作为基础语言, 缺少分区度, 难度, 会让学生偷懒, 难以培养优秀的程序员Java总是不合时宜, 还是让我们回到传统的C语言去。

如今的学生变懒了, 是因为我们宠着, 恶性循环下去他们什么苦都不会吃, 所以第一门的计算机语言课程不能让Java替代了C语言, 让他们过了这座山, 剩下的路就平坦了, 欲成大器, 先苦其心志。

摘要:从C语言四个固有的基础语言优势, 分析Java作为基础语言教学的不足, 结合自身的十多年IT从业经验, 以轻松漫谈的方式, 展开对C语言和Java语言作为基础教学语言中的优劣分析。

关键词:Java语言,C语言,课程难度,基础课程,适合教学

参考文献

[1]《Java编程思想》[Thinking in Java]作者:Bruce Eckel ISBN:86

篇4:java基础知识学习

【关键词】JAVA语言;WEB开发

一、JAVA简介

当今社会,编程语言种类繁多。面临着越来越高要求的客户需求,我们急需功能更加强大,语言更灵活的编辑语言。JAVA语言就在这样一个背景下应运而生。JAVA语言功能强大,优点众多。下面简要说下它的几个优点:第一、JAVA语言可适用于多种操作系统平台,支持多线程并行操作,并且多个线程可以一起进行。这样节省了大量的时间,可以让不同程序同时进行,减少了等待时间;第二、JAVA语言使用简单灵活,被人们广泛关注和运用;第三、JAVA语言很多程序,在执行操作的时候,运行效率高速度快(甚至快于C++),出错率低;第四、JAVA语言适用面广。由于这门语言的自身特点,可以使其无论是在复杂还是单一的环境中都可以方便的开发使用。如:开发设计ORACLE等环境。

由于JAVA语言的搭建,是通过框架结构来实现的,这也是为什么JAVA语言简单的一方面因素。不过这也导致了使用JAVA语言过程中,并不能很好的给编程人员带来编程语言能力的提高。在以后的发展道路上,我们还需要更加努力,不断完善JAVA语言,这样才能在种类繁多的语言当中脱颖而出,绽放光彩。

二、JAVA五大特点

1.灵活简单。C语言,C++,JAVA语言都是常见的编程语言。其中C语言的语法比较复杂且难以理解,C++应用是编程技术要求较高,因此常常令编程者感到难以学习和接受。相比之下,JAVA语言比较简单,没有太高的语法和编程技术上的要求,而且JAVA语言在集成功能程序方面也有着其他编程语言不可比拟的优势,因此常常被作为WEB开发的首选,其发展也相对成熟。

2.java语言不像c++那样只可以对函数继承,还包括各种类等属性。JAVA语言可以称得上是一种面向对象的、整体操作过程动态机制的程序设计。

3.安全方面。JAVA语言可以利用自带的机制,阻止其他恶意程序代码的攻击,并利用自带的安全预防机制对网络下载的包、类进行分析得以实现程序的运行。就是因为JAVA语言的安全性,因此常常被用于常见的网络环境中。

4.JAVA语言可并行操作。在JAVA的操作环境下,Thread类和Runnable接口的对象通过独特的编写方式和相关的类库等程序操作来创建一种特别的对象——线程。基于这样的编写方式和操作流程,JAVA语言具有更高的效率,能够多线程一同或者并行工作且互不影响。

5.动态性。我们当初是为了开发这样一门语言:可以实时的进行数据操控,能够通过语言在动态的环境中进行数据操作。JAVA语言应运而生,它不仅可以在不影响操作程序的前提下,通过动态的编辑操作将类和包调入到运行的系统环境当中,还可以实时的对包和类进行调用和下载。

三、JAVA语言开发WEB的环境

从功能上来区分的话,JAVA的开发环境可以分为Jcreator(简单环境)和像Eclipse(强大开发环境)两种。通过对目前国内外的形势来看,客户所需要开发的软件功能较为复杂,所以很多大中型的开发公司都在Eclipse和Jbuilder的环境下通过JAVA来研发软件的。如下,介绍下Eclipse和Jbuilder。

Eclipse:其本身就是一个框架,可扩展的研究开发平台,通过插件的形式来搭建集成环境。有以下几个有点供大家参考学习:第一、Eclipse不仅具备开发程序还具备调试相关程序的功能,所以在很多开发环境中我们更倾向于选择使用它;第二、方法简单高效。在Eclipse环境中,具备多种可以直接被调用的快捷键方法。这样减少了大量的人力和时间。第三、时效性强。可以在程序调试的时候,进行断电设置。这样我们可以在突发情况下,快速准确的找到并跟踪问题所在,可以任意中断程序,能达到早发现早处理的良好效果。在使用Eclipse这一集成开发环境的过程中,我们发现其存在着一些不足。比如在WEB的研发过程中并非所有的功能都能通过Eclipse实现。因此,经过进一步探索研究,增强了Eclipse的多个功能,开发出了MyEclipse工具,大大减少了WEB开发所需的时间。

Jbuilder:由BORIt1ND公司开发成功,增强了WEB开发技术。能够使得不同地域的人共同合作,同时研发同一个项目,解决了由于团队磨合上造成的大量没必要的人力和金钱损失。这一环境的开发重要是为了在JAVA的最新版本下运行,得到功能上更好更多的效果。客户通过builder的相关操作,可以实现一下几个方面:第一、可以得到所需的数据库表的JAVA类;第二、实现各种各样电子商务平台的开发;第三、结合运用JAVA语言开发动态WEB,实现图形模式窗口和线程并行操作。

四、JAVA在WEB开发中的相关技术

ava Database Connectivity:JAVA语言的这一技术操作,主要是实现访问连接数据库。当我们在程序开发过程中,很有可能会伴随着不断的调试程序,修改程序等操作,这就带来了数据库会不断中断的现象。我们如何实现这一功能。我们利用这一技术,通过一个特定的类和借口,运用更为高端的工具进行连接。随时对后台数据库进行访问连接。

Java Annotatio:这一技术将JAVA程序中的各项函数整合起来,建立一种统一的操作规范。通过这一技术我们可以让操作程序中的各类数据量(如类和变量等)进行统一,然后对其进行相关的程序操作。Java Annotatio技术当中还伴随着一个独立的控制体系,就是JavaBeans技术。这一独立技术在WEB当中被广泛应用,起着至关重要的作用。它创造了真实世界的相应内容,不仅安全系数非常高而且移植性也非常强。

Java Media Framework API:这一操作技术,可以使得我们在JAVA语言的编写过程中更好的调用使用一些视频等技术或者在Applet程序中体现出这一效果。这一操作顺应WEB动态网络平台这一现实情况,实现了动态网页的多样化,更加方便快捷的实现了多媒体效果。对于开发人员来说,这更是提供了一个很好的机会,能够使得开发人员更好的完成用户在动态网络平台上想要实现的效果。

Java Remote Method Invocation:这一技术主要是为了达到客户系统和服务器之间的连接。我们是通过应用小程序(分布式)和在JAVA中将对象和类进行调用来实现的。我们程序员在WEB的开发设计过程中,为了实现程序的安全完整性,就是采用这一技术对进行数据操作,达到整合信息资源的效果。

五、结语

对着编程语言的更新换代,客户对要实现的功能需求越来越高,编程语言在实现功能方面,也面临着越来越大的考验。在这一严峻的形势下,JAVA语言依然被人们所广泛应用。这不仅在一定程度上充分说明了JAVA语言功能强大高效实用,而且说明了当今WEB网络平台开发上,JAVA有着不可替代的地位。在JAVA语言的准确安全方面,还有更广阔的发展空间。我们可以通过更好的方法来提高利用率,以便于提高JAVA的准确安全性。当然,客户对于WEB平台的开发不断的提出更高更难以实现的要求。这就意味着我们要不断努力,完善和改进JAVA技术来处理客户的相关需求。相信,经过我们的不断探索分析,我们将把这一技术做的更加完善,做到更好。

参考文献

[1]王咸伟.Java面向对象编程语言及其应用[J].电脑技术,2010(12).

[2]徐柏燕.Java编程语言及其应用[J].电脑与信息技术,2010(6).

[3]郝蓄.基于Java的网络中文平台的研究与实现[D].西安电子科技大学,2010.

[4]郭慧萍.基于模板的动态Java字节码生成器的设计与研究[D].北京工业大学,2009.

作者简介:高飞(1982—),男,现供职于渤海船舶职业学院教育技术中心。

篇5:Java学习_基础总结

Java 学习基础总结归纳!

1、作用域public,private,protected,以及不写时的区别

答:区别如下:

作用域

当前类

同一package

子孙类

其他package public

protected

×

friendly

×

×

private

×

×

×

不写时默认为friendly

2、Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)

答:匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现

3、Static Nested Class 和 Inner Class的不同

答:Nested Class(一般是C++的说法),Inner Class(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

4、&和&&的区别

答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)

5、Collection 和 Collections的区别

答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

6、什么时候用assert

答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的

7、String s = new String(“xyz”);创建了几个String Object

答:两个,一个字符对象,一个字符对象引用对象

8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少

答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor

9、short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错

答:short s1 = 1;s1 = s1 + 1;(s1+1运算结果是int型,需要强制转换类型)short s1= 1;s1 += 1;(可以正确编译)

10、Java有没有goto

答:java中的保留字,现在没有在java中使用

11、数组有没有length()这个方法? String有没有length()这个方法

答:数组没有length()这个方法,有length的属性。String有有length()这个方法

12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型

13、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别

答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等 equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

14、给我一个你最常见到的runtime exception

答:常见的运行时异常有如下这些ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

15、error和exception有什么区别 答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况

16、List, Set, Map是否继承自Collection接口

答: List,Set是,Map不是

17、abstract class和interface有什么区别

答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口

18、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized

答:都不能

19、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数

20、构造器Constructor是否可被override

答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading

21、是否可以继承String类

答:String类是final类故不可以继承

22、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后

答:会执行,在return前执行

23、用最有效率的方法算出2乘以8等於几 答:2 << 3

24、两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对

答:不对,有相同的hash code

25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上

答:witch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、short、char 或者 byte。long,string 都不能作用于swtich

27、ArrayList和Vector的区别,HashMap和Hashtable的区别

答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半就HashMap与HashTable主要从三方面来说。一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

28、char型变量中能不能存贮一个中文汉字?为什么? 答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

29、GC是什么? 为什么要有GC

答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

30、float型float f=3.4是否正确?

答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

31、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?

答:Collection FrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)Map提供key到value的映射

32、抽象类与接口?

答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。JAVA类实现序例化的方法是实现java.io.Serializable接口 Collection框架中实现比较要实现Comparable 接口和 Comparator 接口

33、String与StringBuffer的区别。

答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

34、谈谈final, finally, finalize的区别

答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)finalize—方法名。Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的

35、面向对象的特征有哪些方面

答:主要有以下四方面:

1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4.多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

36、String是最基本的数据类型吗

答:基本数据类型包括byte、int、char、long、float、double、boolean和short。java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

37、int 和 Integer 有什么区别

答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类

booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关

38、运行时异常与一般异常有何异同

答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

39、说出ArrayList,Vector, LinkedList的存储性能和特性

答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

40、HashMap和Hashtable的区别

答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

41、heap和stack有什么区别

答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

42、Java的接口和C++的虚类的相同和不同处

答:由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

43、Java中的异常处理机制的简单原理和应用

答:当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

43、垃圾回收的优点和原理。并考虑2种回收机制

答:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

44、你所知道的集合类都有哪些?主要方法?

答:最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形。Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

45、描述一下JVM加载class文件的原理机制?

答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

46、排序都有哪几种方法?请列举

答: 排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。/ /使用快速排序方法对a[ 0 :n-1 ]排序从a[ 0 :n-1 ]中选择一个元素作为m i d d l e,该元素为支点把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点递归地使用快速排序方法对left 进行排序递归地使用快速排序方法对right 进行排序所得结果为l e f t + m i d d l e + r i g h t

47、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。用try来指定一块预防所有“异常”的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。throw语句用来明确地抛出一个“异常”。throws用来标明一个成员函数可能抛出的各种“异常”。Finally为确保一段代码不管发生什么“异常”都被执行一段代码。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,“异常”的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种“异常”进行处理,堆栈就会展开,直到遇到有处理这种“异常”的try语句。

48、一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?

答:可以。必须只有一个类名与文件名相同。

49、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

50、java中会存在内存泄漏吗,请简单描述。

答:会。自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java.51、java中实现多态的机制是什么?

答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

52、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收

答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是“可达的”,哪些对象是“不可达的”。当GC确定一些对象为“不可达”时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

53、静态变量和实例变量的区别? 答:static i = 10;//常量 class A a;a.i =10;//可变

54、什么是java序列化,如何实现java序列化?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

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

答:不可以,如果其中包含对象的method();不能保证对象初始化.56、写clone()方法时,通常都有一行代码,是什么?

答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

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

答:用break;return 方法。

58、List、Map、Set三个接口,存取元素时,各有什么特点?

答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

59、说出一些常用的类,包,接口,请各举5个

篇6:JAVA零基础学习资料

1、linux系统中的简单命令操作 1)文件系统:只有一个根目录“/”

目录=文件夹(window)

2)用户的主目录:可以做任何的操作 3)pwd: 显示当前的工作目录

ls : 显示当前工作目录的内容

4)相对路径:相对当前的工作目录:

cd home

绝对路径:一切以根目录作为参照:

cd /home 5)cd : 切换当前的工作目录

cd.: 当前的工作目录

cd..: 上层工作目录

cd / : 切换到根目录

cd ~ :切换到主目录

cd /目录名: 切换到绝对路径下的目录

cd 目录名: 切换到相对路径下的目录

(要切换的目录必须在当前目录的下层)

6)mkdir 创建目录

mkdir demo 在当前的目录下面来创建demo、编程语言历史

1)机器语言 :直接跟硬件操作

0 00001111 2)汇编语言 :

Add 3)中级语言:

C语言

4)高级语言:

C++-->java,c#,php------->000100

web开发:java,c#,php java运行机制 先编译然后再解释

Demo1.java ———》Demo1.class———》001001...(就是机器语言)

编译

解释

4、变量:就是内存中一块存储区域,用来保存数据

1)变量基本知识

确定变量的类型,确定变量名字

整数类型 : int

变量名:

num

格式: 数据类型 变量名;

eg :int num;

2)给变量赋值

a 赋值符号:“=”

把“=”右边的数值赋值给左边的变量

eg :int num;

num = 12;

b 最后一次的赋值会覆盖掉前面的值 eg :num = 13;、java中的命名规范

1)名字必须以“字母”或

只能包含“字母”或“_”

2)java当中严格的区分大小写

eg : int a ; int A;

3)命名一定不能跟关键字(4)最好见名知意

5)注意缩进

6、把已有的java工程导入到

第一步:点击File----->点击或“$”开头或“$”或“数字 int)重复eclipseImport ,里面 ”

“_”

软件中:

第二步:双击General

第三步:双击上图那个位置

Eclipse简单的介绍,在工程区域右击新建包名和类名,在上图中最下方有个小的console窗口,是运行java文件后输出的结果。右击java文件名找到run as,再点击Java application 就有运行。

第四步:双击Browse,找到想要打开的java文件

本文来自 360文秘网 (www.360wenmi.com),转载请保留网址和出处

【java基础知识学习】相关文章:

学习java需要什么基础05-24

Java学习_基础总结08-23

13_2 第十三天 魔乐java基础视频学习笔记06-16

java语言基础知识06-02

【黑马程序员】Java基础 : Java语句笔记04-27

Java基础总结(必看)10-07

JAVA基础知识精华总结08-03

java基础知识点小结07-18

java基础总结必看05-07

版权声明


相关文章:

  • java冷门基础题2025-04-10 16:02:00
  • java 基础多线程2025-04-10 16:02:00
  • python java 英语基础2025-04-10 16:02:00
  • java基础学习资料2025-04-10 16:02:00
  • java基础案件2025-04-10 16:02:00
  • 无怎样读懂java语句java基础原理2025-04-10 16:02:00
  • java无基础面试2025-04-10 16:02:00
  • java基础核心2025-04-10 16:02:00
  • Java基础详解pdf2025-04-10 16:02:00
  • java基础没学好2025-04-10 16:02:00