山东青岛电脑学校 专业软件工程师培训,软件人才就业实训中心0532-85025005

Java静态方法和实例方法的区别

 静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。 下面几个例子展示了这一区别。 1、调用静态方法示例。 //-----------hasStaticMethod.java-----------------
public class hasStaticMethod{
//定义一个静态方法
public static void callMe(){
  System.out.println("This is a static method.");
}
} 下面这个程序使用两种形式来调用静态方法。//-----------invokeStaticMethod.java-----------------
public class invokeStaticMethod{
  public static void main(String args[]){
  hasStaticMethod.callMe();  //不创建对象,直接调用静态方法    
  hasStaticMethod oa = new hasStaticMethod();   //创建一个对象
  oa.callMe();      //利用对象来调用静态方法
}
} 程序两次调用静态方法,都是允许的,程序的输出如下:This is a static method.This is a static method.  允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。还有一个很典型的代表就是数组的处理工具Arrays2、静态方法访问成员变量示例。 //-----------accessMember.java-----------------
class accessMember{
private static int sa; //定义一个静态成员变量
private int ia;  //定义一个实例成员变量
//下面定义一个静态方法
static void statMethod(){
  int i = 0;    //正确,可以有自己的局部变量sa = 10;   
  //正确,静态方法可以使用静态变量
  otherStat();  
  //正确,可以调用静态方法
  ia = 20;   //错误,不能使用实例变量
  insMethod();  //错误,不能调用实例方法
}
static void otherStat(){} 
//下面定义一个实例方法 
void  insMethod(){
  int i = 0;    //正确,可以有自己的局部变量
  sa = 15;    //正确,可以使用静态变量
  ia = 30;    //正确,可以使用实例变量
  statMethod();   //正确,可以调用静态方法
}
}  本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。 main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 29

Java容器类总结

 

1.java容器分类图

  说明:左图为简化图(其中粗线部分是重点的容器),右图为完整容器分类图

                         

 

2.容器类接口和抽象容器类

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 18

为什么java如此经久不衰

 

其实这种老生常谈的话题,没必要说来说去的,只是看到网络上有很多误导人的观点,觉得很不爽

我先澄清这些观点,再来谈谈我的见解。

观点一:“同样的代码java写的更多,而C#写的更少。那么C#的门槛更低,竞争更激烈” 我觉得能说出这种话的人,基本上还停留在普通专科院校没毕业的水平,基本没什么思考,笑笑就好。软件开发过程中多敲几行少敲几行都不是事。关键是能理解清楚需求,理解目标,用最适合的方式解决。不管C#的语法糖多么优秀,在java同样也能找到差不多的解决方案,实现效果在产品侧不会出现巨大差异。 
观点二:“java是一门跨平台开发的语言,跨平台无压力” 这确实在java语言开发的初期是个优势点,但是现在早就不是了。其次,java面向的场景都是大型企业应用的场景,只要在linux或者windows server下能稳定运行即可,是不是跨平台收益不大(但也不是没有) 
如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。 
观点三:“现在android开发很火啊,学好了很赚钱” 这个观点和观点二有点类似。在早几年是这样的,当然现在H5也没有大规模应用。但是现在的app大多数都稳定了,而且android上很多技术都很成熟了,很多能力可以固化下来,让一些技能水平不是很高的开发人员就可以上手。现在的趋势是:一个团队有若干个,甚至只要一个移动端的开发大牛即可,大牛攻克难题,其他人打打下手,很多业务就能满足了。java现在的主要场景还是后端,尤其是大型系统。 
还有其他观点暂时没想到,大家可以帮忙补充,我可以解答

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 16

关于 iOS HTTP2.0 的一次学习实践

 

前面的文章也提到了目前的移动端网络常见性能问题,以及对应的优化策略,如果把HTTP1.1 替换为 HTTP2.0,可以说是网络性能优化的一步大棋。这几天对 iOS HTTP2.0 进行了简单的调研、测试,在此做个简单的总结

本文的大概思路是介绍 HTTP1.1 的弊端、HTTP2.0 的优势、HTTP2.0 的协商机制、iOS 客户端如何接入 HTTP2.0,以及如何对其进行调试。主要还是加深记忆、方便后期查阅,文末的资料相比本文或许是更有价值的。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 23

Java笔试面试题库

 

1:EJB:

答:   Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问 (跨进程、跨计算机) 。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 12

Java中堆内存和栈内存详解

 

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。

堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 10

Java初学者的30个常见问题

 

本文回答了30个JAVA入门级初学者的常见问题。 我可以用%除以一个小数吗? a += b 和 a = a + b 的效果有区别吗? 声明一个数组为什么需要花费大量时间? 为什么JAVA库不用随机pivot方式的快速排序?

 

1.2 基本数据类型

Q. 为什么 -0/3 结果是 0,而  -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号)

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 7

怎样编写高质量的Java代码

 

代码质量概述

    怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的意见。

 

    代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5方面很大程序上决定了一份代码的质量高低。我们分别来看一下这5方面:

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 27

Java 8 lambda初试

 

λ表达式本质上是一个匿名方法。让我们来看下面这个例子:
public int add(int x, int y) {
    return x + y;
}

转成λ表达式后是这个样子:
(int x, int y) -> x + y;

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 18

程序员的技术图腾

 

如果让一个IT界以外的人来列举他欣赏的IT名人,他可能会列出:美国的比尔盖茨、乔布斯,中国的马云、李彦宏、马化腾。

如果让一个程序员来列举他欣赏的IT名人,大概和这个名单相差不大,也许会多出几个求伯君、雷军式的人物。

有没有发现这个名单中有一个特点,就是这些名人都是老板,虽然有些人是做技术出身,但他的技术肯定没有达到科学家级别,甚至连研究员级别都没达到。那为什么这些人比那些科学家更加有名得多?

带着这个疑问,我们看看一些程序员们是如何看待这个问题的。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 6