我的java之路之工作中的java类
2012-07-14 11:39
162 查看
前面我们讲了java的一些基本性质,如变量,控制语句,类,接口的一般性质,对于java也算是半只脚踏入了大门。其实学习一门语言,对于大多数人来说就是为了更好的工作,那么就目前的我们前面所讲的对于我们工作有什么用呢?
有个工作经验的人都晓得,其实在工作中我们需要的东西并不多,也许我们仅仅是需要java知识点的某一点,然后按照套路,就可以完成上级部署的任务了。但是这一切都在你面试成功的基础之上,因此这次我要讲两个方面,面试与工作
面试篇
面试其实考的就是基础,虽然他范围大,但本质上还是机上上扩展而来的,以我们前面讲的内容为例,看下下面这道题,这题也是前几天在csdn上看到比人面试后贴上来的:
有如下代码,问,这个循环会不是死循环
for(int i=1;i>0;i++){
System.out.println(i);
}
所谓死循环,就是代码一直满足条件,系统一直执行下去,不会退出,上面的代码初步的看一下,先初始化了i=1,然后判断i是否大于0,满足,输出i,在执行自增1,i变成2,继续判断是否满足i>0这个条件,等于2肯定满足。。。由此一看,肯定是无限的执行下去,从而判断答案是该循环会死循环!
但是,大家是否记得前面讲的整形的范围呢,最大值为2的31次方减1,当i的值大于这个值后又会发生什么事情?当整型的值超过其最大值后会变成负数,一旦变成负数将不满足i>0这一条件,继而可以退出循环了,我们可以用以下代码试一试:Integer.MAX_VALUE这个是获取整型最大值的方法,我们将其初始值设定为整型的最大值,然后观察结果。
for (int i1 = Integer.MAX_VALUE; i1 > 0; i1++)
System.out.println(i1);
}
这道题难吗?不难,只是考了java的循环控制语句,与数值的取值范围,仔细一点也就不会出错了,再看一道题:
下列不是关键字的是哪几项?
A Void B int C 1qwn Dextends
首先我们要明确作为关键字必须是标识符,所以我们很容易的判断出C不是关键字,看看ACD好像都是关键字,事实真的是这样吗?不要忘了,在java中大小写是敏感的,字母A与字母a是代表着不同的含义,选项A中虽然Void四个字母组合起来与关键void一个样,但是V大写了,所以他也不是关键,故答案是AC;
细节决定成败,所以我们在面试的时候也小心点,细节决定成败,好了如果有实力,进入了一家公司,我们就得工作,毕竟公司不是请你来玩的。
工作篇
1代码规范问题:在工作中一般不是自己孤军奋斗,讲究的是团队,team,因而写出一个符合java代码规范的代码对大家都有好处,看下如下代码:
public class abcsddsfwfre{
private int a=3;
public void A(){
int b=4;
for(int i=0;i<4;i++)
System.out.println();System.out.println("ok");
if(b==4)
System.out.println("4");
System.out.println("111");
}
}
不晓得大家看到上面这份代码有什么感受,第一个反应就是天书,一堆代码放在那里不晓得是干什么的,ok我们来分析一下上面代码有哪些不规范:
1.1类的命名:我们前面讲过类的命名规范:见名之意,驼峰式命名,单词在2-5个之间;
看到abcsddsfwfre,谁能告诉我,这个是什么意思?全部是小写。。。。
1.2变量的命名:见名之意,大概意思还是要了解,变量a。变量b,谁能告诉我代表什么含义,如果说在循环里面使用ijk等变量我们可以当做是大家的习惯问题
1.3方法的命名:首个字母小写,见名之意
1.4循环控制语句:虽然说循环控制语句在不打大括号的时候会默认循环体是它下面的第一句话,但是我们为了更显式的判断他控制的范围,都要将循环体用大括号控制起来,对已分支语句if也是一个样
1.5代码的排版:缩进式排版方法,一行写一条命令,上面的代码中两条输出语句写成一行了,if语句下面的输出语句没有缩进
1.6注释问题:一份好的代码注释是必不可少的,注释就是为了让别人更好的理解你写的代码的含义,让你头脑中的思想展现出来
package com.myjava.mianshi;
/**
* @author zhouxiaoyun
* @date 2012-7-14 上午11:11:51
* @function 用于说明java代码规范
*/
public class GuiFanTest {
//一般数字类型的最好用num
private int num;
//用于说明控制语句的规范问题
public void controlMethod(){
int num=1;
//循环语句的规范示例:
for(int i=0;i<4;i++){
System.out.println();
}
System.out.println("ok");
//if语句的规范示例
if(num==4){
System.out.println("4");
}
System.out.println("111");
}
}
2重载与重写:java多态性的体现,重载体现在一个类中的不同方法中,重写体现在父类与子类中,继承的问题
重载(overloading),方法名称必须相同,参数必须不同。对象根据方法的参数类型,或者个数去调用对应的方法
重写(overriding),方法名称必须相同,参数也要相同,访问权限不能比父类小。如果子类重写了父类的方法,但是要用父类的方法,可以使用super关键字去引用父类的方法
通过代码我们来看看
package com.myjava.mianshi;
/**
* @author zhouxiaoyun
* @date 2012-7-14 上午11:25:02
* @function 父类
*/
public class Father {
public void fatherMethod(){
System.out.println("父类的方法");
}
}
//第二个代码:
package com.myjava.mianshi;
/**
* @author zhouxiaoyun
* @date 2012-7-14 上午11:25:46
* @function 子类,继承Father
*/
public class Son extends Father{
@Override
public void fatherMethod(){
//调用父类的方法
super.fatherMethod();
System.out.println("子类重写父类的方法,一般在方法的前面加上@Override");
}
/*private void fatherMethod(){
//方法名与参数与父类的一个方法完全相同,但是访问权限小于public
//所以这样写报错
}*/
//这个方法不会报错,但是他不是父类方法的重写
private void fatherMethod(int num){
System.out.println("不是父类的方法重写");
}
//重载方法A:输出整数
public int daYin(int num){
System.out.println("打印整型"+num);
return 0;
}
//重载方法A,输出一个字符串
public int daYin(String str){
System.out.println("打印字符串"+str);
return 0;
}
//重载方法A:输出一个整数与一个字符串
public int daYin(int num,String str){
System.out.println("打印整型"+num+"==打印字符串"+str);
return 0;
}
/*public void daYin(int num){
//这里不能命名打印了,因为他不是daYin方法的重载了,他只是返回类型不同
//仅仅返回类型的不是重载
}*/
public static void main(String[] args) {
Son son=new Son();
//方法重写测试
son.fatherMethod();
//方法名相同但是参数不同的方法测试
son.fatherMethod(3);
//方法重载的测试
son.daYin(4);
son.daYin("hello");
son.daYin(4, "hello");
}
}
大家可以参考上面的两个类好好的理解java的多态性
ok,关于java的类的一般性质我们就讲到这里,在学习的过程可以去查查资料,扩展一下,下节我们将会将一个特殊的类:字符串String,通过它来学会API的使用
有个工作经验的人都晓得,其实在工作中我们需要的东西并不多,也许我们仅仅是需要java知识点的某一点,然后按照套路,就可以完成上级部署的任务了。但是这一切都在你面试成功的基础之上,因此这次我要讲两个方面,面试与工作
面试篇
面试其实考的就是基础,虽然他范围大,但本质上还是机上上扩展而来的,以我们前面讲的内容为例,看下下面这道题,这题也是前几天在csdn上看到比人面试后贴上来的:
有如下代码,问,这个循环会不是死循环
for(int i=1;i>0;i++){
System.out.println(i);
}
所谓死循环,就是代码一直满足条件,系统一直执行下去,不会退出,上面的代码初步的看一下,先初始化了i=1,然后判断i是否大于0,满足,输出i,在执行自增1,i变成2,继续判断是否满足i>0这个条件,等于2肯定满足。。。由此一看,肯定是无限的执行下去,从而判断答案是该循环会死循环!
但是,大家是否记得前面讲的整形的范围呢,最大值为2的31次方减1,当i的值大于这个值后又会发生什么事情?当整型的值超过其最大值后会变成负数,一旦变成负数将不满足i>0这一条件,继而可以退出循环了,我们可以用以下代码试一试:Integer.MAX_VALUE这个是获取整型最大值的方法,我们将其初始值设定为整型的最大值,然后观察结果。
for (int i1 = Integer.MAX_VALUE; i1 > 0; i1++)
System.out.println(i1);
}
这道题难吗?不难,只是考了java的循环控制语句,与数值的取值范围,仔细一点也就不会出错了,再看一道题:
下列不是关键字的是哪几项?
A Void B int C 1qwn Dextends
首先我们要明确作为关键字必须是标识符,所以我们很容易的判断出C不是关键字,看看ACD好像都是关键字,事实真的是这样吗?不要忘了,在java中大小写是敏感的,字母A与字母a是代表着不同的含义,选项A中虽然Void四个字母组合起来与关键void一个样,但是V大写了,所以他也不是关键,故答案是AC;
细节决定成败,所以我们在面试的时候也小心点,细节决定成败,好了如果有实力,进入了一家公司,我们就得工作,毕竟公司不是请你来玩的。
工作篇
1代码规范问题:在工作中一般不是自己孤军奋斗,讲究的是团队,team,因而写出一个符合java代码规范的代码对大家都有好处,看下如下代码:
public class abcsddsfwfre{
private int a=3;
public void A(){
int b=4;
for(int i=0;i<4;i++)
System.out.println();System.out.println("ok");
if(b==4)
System.out.println("4");
System.out.println("111");
}
}
不晓得大家看到上面这份代码有什么感受,第一个反应就是天书,一堆代码放在那里不晓得是干什么的,ok我们来分析一下上面代码有哪些不规范:
1.1类的命名:我们前面讲过类的命名规范:见名之意,驼峰式命名,单词在2-5个之间;
看到abcsddsfwfre,谁能告诉我,这个是什么意思?全部是小写。。。。
1.2变量的命名:见名之意,大概意思还是要了解,变量a。变量b,谁能告诉我代表什么含义,如果说在循环里面使用ijk等变量我们可以当做是大家的习惯问题
1.3方法的命名:首个字母小写,见名之意
1.4循环控制语句:虽然说循环控制语句在不打大括号的时候会默认循环体是它下面的第一句话,但是我们为了更显式的判断他控制的范围,都要将循环体用大括号控制起来,对已分支语句if也是一个样
1.5代码的排版:缩进式排版方法,一行写一条命令,上面的代码中两条输出语句写成一行了,if语句下面的输出语句没有缩进
1.6注释问题:一份好的代码注释是必不可少的,注释就是为了让别人更好的理解你写的代码的含义,让你头脑中的思想展现出来
package com.myjava.mianshi;
/**
* @author zhouxiaoyun
* @date 2012-7-14 上午11:11:51
* @function 用于说明java代码规范
*/
public class GuiFanTest {
//一般数字类型的最好用num
private int num;
//用于说明控制语句的规范问题
public void controlMethod(){
int num=1;
//循环语句的规范示例:
for(int i=0;i<4;i++){
System.out.println();
}
System.out.println("ok");
//if语句的规范示例
if(num==4){
System.out.println("4");
}
System.out.println("111");
}
}
2重载与重写:java多态性的体现,重载体现在一个类中的不同方法中,重写体现在父类与子类中,继承的问题
重载(overloading),方法名称必须相同,参数必须不同。对象根据方法的参数类型,或者个数去调用对应的方法
重写(overriding),方法名称必须相同,参数也要相同,访问权限不能比父类小。如果子类重写了父类的方法,但是要用父类的方法,可以使用super关键字去引用父类的方法
通过代码我们来看看
package com.myjava.mianshi;
/**
* @author zhouxiaoyun
* @date 2012-7-14 上午11:25:02
* @function 父类
*/
public class Father {
public void fatherMethod(){
System.out.println("父类的方法");
}
}
//第二个代码:
package com.myjava.mianshi;
/**
* @author zhouxiaoyun
* @date 2012-7-14 上午11:25:46
* @function 子类,继承Father
*/
public class Son extends Father{
@Override
public void fatherMethod(){
//调用父类的方法
super.fatherMethod();
System.out.println("子类重写父类的方法,一般在方法的前面加上@Override");
}
/*private void fatherMethod(){
//方法名与参数与父类的一个方法完全相同,但是访问权限小于public
//所以这样写报错
}*/
//这个方法不会报错,但是他不是父类方法的重写
private void fatherMethod(int num){
System.out.println("不是父类的方法重写");
}
//重载方法A:输出整数
public int daYin(int num){
System.out.println("打印整型"+num);
return 0;
}
//重载方法A,输出一个字符串
public int daYin(String str){
System.out.println("打印字符串"+str);
return 0;
}
//重载方法A:输出一个整数与一个字符串
public int daYin(int num,String str){
System.out.println("打印整型"+num+"==打印字符串"+str);
return 0;
}
/*public void daYin(int num){
//这里不能命名打印了,因为他不是daYin方法的重载了,他只是返回类型不同
//仅仅返回类型的不是重载
}*/
public static void main(String[] args) {
Son son=new Son();
//方法重写测试
son.fatherMethod();
//方法名相同但是参数不同的方法测试
son.fatherMethod(3);
//方法重载的测试
son.daYin(4);
son.daYin("hello");
son.daYin(4, "hello");
}
}
大家可以参考上面的两个类好好的理解java的多态性
ok,关于java的类的一般性质我们就讲到这里,在学习的过程可以去查查资料,扩展一下,下节我们将会将一个特殊的类:字符串String,通过它来学会API的使用
相关文章推荐
- Java菜鸟学习之路之开篇——————准备工作!
- java程序员工作三年的修行之路
- 工作三年的java程序员修行之路
- java程序员的大数据之路(8):MapReduce的工作机制
- java学习之路----IO---学习工作经历,乱码的产生
- 一个Android应用开发菜鸟的成长之路——工作第一天:解决了java.lang.NoClassDefFoundError问题
- 工作三年的java程序员修行之路
- java学习之路一、工作线程
- JAVA自学之路
- Java四种线程池和工作队列
- java知识总结(工作一年半差不多两年了,感觉是时候总结一下java,文章内容为本人观点)
- Java学习之路:不走弯路,就是捷径
- Hibernate的学习之路十九(一对多的JavaBean编写和映射的配置文件的编写)
- 算法学习之路:分治策略-最大子数组-java实现
- Android 之路21---Java基础15
- ThreadPoolExecutor中策略的选择与工作队列的选择(java线程池)
- JAVA自学之路 三:要动手
- 实例探索Java模式之路——简单工厂模式
- Java学习之路:不走弯路,就是捷径!【转】
- 通往大神之路,百度Java面试题前200页。