`
中南大宝
  • 浏览: 33684 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多

 

2012六月末,我在蓝杰报名学习Java这种计算机编程语言,应熊哥等哥哥级老师的要求,也为系统的梳理学习内容,注册ITeye技术网站,开始撰写我的技术博客,以期日后自己回忆起来时,能找到自己钻研技术时的一些领悟和感触,当然也是一种大学时光的见证。因此,我将努力写好这段Java学习之旅的收获与感悟。

 

一、何为Java?它是干什么的?它...

简而言之,Java是一种计算机编程语言,这种语言因为具备跨平台免费开源的优点在短短十几年的时间内获得了极大的发展,当然还包括了面向对象的编程方法和简单易用(舍弃了C语言中麻烦的指针操作)等优点,在编程语言的使用上也一度占据第一的宝座。

Java源程序的后缀是.java; Java编译后的文件是.class; Java的编译器是Javac(反正在DOS环境下是这样调用的)

因为Java支持跨平台操作,所以在不同的操作系统下我们要配置不同的运行环境(JRE),内含Java虚拟机(JVM)。Java开发工具包(JDK)包含了Java运行环境和Java编译器,所以我们要安装JDK

Java的集成开发工具(IDE)有Eclipse,Jcreater等。

 

二、Java中的基本数据类型等概念的理解?

Java中的基本数据类型有8种,要记住这几种基本类型他们所占的字节,以后是要经常用到的,这里跟C语言是不同的。

byte        1B

int          4B

short       2B

long        8B

char        2B

float        4B

double      8B

Boolean  ture/false

数据类型转换一般存在于整数、浮点数、字符之间。规则是:

低精度的值可以直接赋给高精度的值,直接变成了高精度,这里的高精度一般认为是:

byte < short < char < int < long < float < double

2、高精度的值不可以直接赋给低精度的变量,为了解决这个问题,就要进行强制转换,方法是:

目标类型   变量 = (目标类型)值

String虽然不是8中基本类型,它是Java中的一个类,但是它的使用方法确是跟基本数据类型很相近,而且遵守值传递的规则。

 

三、什么是类?什么是对象?它们在内存中是如何存放和引用的?

类从字面上就能理解,就是一类东西,它们具备一些相同的特征和行为。而对象则可以这样理解,它是一个具体的东西,不是抽象起来的一类东西,而是这些具有相同特征和行为的一个具体的个体。

类用类名定义一个对象名,new关键字来实例化一个对象,定义的过程中并不给分配内存空间,只有在实例化的时候才给分配一个空间,昨天晚上,其实应该叫今天凌晨,也就是两三个小时前,室友给我跟另一位室友分析了一下new在实例化对象时的内存分配情况。但new后的对象会在实际的内存中分配一定的空间。定义后的一个名称存放在高速缓存区,里面存放了它所指向的元素或者对象的地址。举个例子,生了一个小孩,给他起了名字,名字是放在一个地方的,他只是一个代号,代表了他所代表的小孩,而这个小孩是真正的一个对象。

 

四、什么是值传递?什么是引用传递?

这两个概念是这样区分的:值传递就是在内存中重新分配了一块内存,并把这块新内存的地址赋给了新的变量。引用传递就是把内存中存在的这个元素的地址直接传给了变量,并没有在内存中重新分配一块空间,所以美其名曰引用传递。但是,在值传递中还有一个特殊的String,它也是值传递,至于为什么就不深究了,记住就好了。

下面用一段代码来演示一下:

//验证引用类型是遵守引用传递的规则的代码示例

publicclass Employee {

       private String name;

       publicvoid setname(String name){

              this.name = name;

       }

       publicvoid getname(){

              System.out.println("员工姓名是"+name);

       }

       publicstaticvoid main(String[] ar){

              Employee employ1 = new Employee();//实例化第一个员工对象

              Employee employ2 = new Employee();//实例化第一个员工对象

              employ1.setname("张三");//给第一个员工输入名字张三

              employ2= employ1;//把第一个员工对象赋给第二个员工

              employ1.getname();//输出第一个员工的姓名

              employ2.getname();//输出第二个员工的姓名

              employ2.setname("李四");//更改第二个员工的姓名为李四

              employ1.getname();//输出更改后第一个员工的姓名

              employ2.getname();//输出更改后第二个员工的姓名

              //如果更改后输出的结果都是李四,就证明的确是引用传递

       }

}

运行结果如下:

员工姓名是张三

员工姓名是张三

员工姓名是李四

员工姓名是李四

 

//验证基本类型是遵守值传递的规则的代码示例

publicclass Boss {

       publicstaticvoid main(String[] args) {

              int i = 123456;

              int j;

              j=i;//i的值赋给j

              System.out.println("更改前:i"+i+"    j"+j);

              i=654321;//更改i的值看j的值改变不

              System.out.println("更改后:i"+i+"    j"+j);

              //如果j值没有改变,说明基本类型遵循“值传递”规则

       }

}

运行结果是:

更改前:i123456    j123456

更改后:i654321    j123456

 

第五个问题:什么是构造器or构造函数?什么是重载?以及一些其他的东东...

构造器是这样的一个东西,它主要的作用是在实例化对象时传入参数值。书写方式是public + 类名(传入的参数){}。构造器又名曰构造函数。但它不能有任何返回值,而且必须与类名相同,在实例化对象的过程中它只被调用一次。

函数的重载,是这样一种东西,它允许你给定一个函数名(方法),这个函数同名,但是参数类型不同,数量不同抑或参数的次序不同。这样的话方便了开发人员,不用搞很多其他的函数名称在里面,容易搞晕。

函数的重载(overLoad)和函数的重写(overWrite)是有很大不同的,具体体现在:

overLoad是表现在同一个类下对同一函数名的重复书写,当然后面传入的参数是不同的;而overWrite是继承或者实现类中的一个概念,它修改了父类或者接口中的某些方法,当然后面的参数格式是必须相同的。

 

六、this关键字的用法?

this关键字一般是用来在类中指代当前对象的,当传入的参数名称与类中参数名称相同时加以区分。另外一种用法是放在构造器中调用其他构造器,也可以调用方法。需要注意的是,在构造器中通过this调用另一个构造器时,调用的代码必须是第一行,且只能调用一次。并且,在一般方法中不能够用this调用构造器。

一般这样用 this.name = name;

 

我的第一篇技术学习博客就写这么多,下一篇将会将我对继承,接口等内容的理解写下来。

 

201278日中午写于寝室

201283日中午修正于寝室

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics