java中 啥时候 在定义的时候 用 public void ?啥时候用 public static void? 还有如果需要打印,一定需
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中 啥时候 在定义的时候 用 public void ?啥时候用 public static void? 还有如果需要打印,一定需相关的知识,希望对你有一定的参考价值。
一定需要main方法吗?
像这段小程序,请问 里面的 public void test1() 调用的是一个方法吗? 为什么不是一个类?还有这里为什么首选public void 而不用 public static void? 如果要打印那个string 如何打印出来
public class Dom4j
//1、得到某个具体的节点内
public void Test1() throws Exception
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.mxl");
Element root = document.getRootElement();
List list = root.elements("书");
Element element =(Element)list.get(0);
String string = element.element("售价").getText();
-----------------------------------------------------------------------------------------------
为了方便理解,可以先把你的方法设置成private的.
这个时候,你在别的类中试试看,还能不能直接调用这个方法呢!
private定义的方法是私有方法,在别的类中就不能直接调用
它和final很亲近,因为凡是final的方法,在子类中都不能被重写
private用多了,你就知道public的排场了
----------------------------------------------------------------------------------------------
关于void:
void方法,是不让你有返回值.如果不是void方法.就必须有相应的返回值!
----------------------------------------------------------------------------------------------
static 的方法,是静态方法.在JVM加载的时候就已经编译过了.所以一直在内存中存在着,
可以用类名直接调用.但是占内存.所以没有必要的情况下,尽量不要写成static的.
动态方法,只有在每次需要使用的时候才回调用到.但是必须创建类的对象
所以首选是void而不是static void
-------------------------------------------------------------------------------------------------
main方法,只是程序运行的一个主方法.可以简单的理解为程序启动的启动控制机房(启动哪个方法的决定权有这个机房掌握,当然这样理解并不科学)
如果要打印,并不是必须有main,在web项目中.如果一个jsp页面直接或者间接"调用"了某个类中的方法,如果这个方法中有打印语句.打印方法也会执行!
总之,只要这个方法被调用了,如果这个方法中有打印语句,就会被执行!(别扣字眼,调用失败的不算) 参考技术A pubilc是公共的,表示在任何地方都可以使用,static是静态的,不用实例化对象就可以用类名调用。void是方法的返回值类型,代表空的返回值类型。程序要想执行,main方法是入口。 参考技术B 如果是在类的内部调用,他们的区别不大,如果在外部调用,一个是静态方法(static),一个类方法,静态方法可以通过类名.方法直接调用,而类方法,要通过对象名.方法。
如果要打印,不一定要在main方法里面,因为print是静态方法(static),所以可以任何时候调用 参考技术C static只是一个静态修饰符,只有静态方法才可以调用,非静态方法不可以调用静态的,还有你的问题有些不明确,不知道你真正的意图是??
angular 啥时候用服务啥时候用指令
AngularJS是一款非常强大的前端MVC框架。同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉。(译者注:老外真谦虚,我大天朝的码农对这些概念那是相当熟悉啊!)这些概念有:Directive(指令)
Controller(控制器)
Service (服务)
我们首先来创建一个module(模块),本文中的所有代码都会用到这个module。
var module = angular.module( "my.new.module", [] );
下一步,我们来创建一个新的service(服务)。假设我们上面的这个module是用来管理图书的。所以,这里我们来创建一个Book service,然后把一个JSON对象数组添加到这个serice中,这些对象代表很多book数据。
module.service( \'Book\', [ \'$rootScope\', function( $rootScope )
var service =
books: [
title: "Magician", author: "Raymond E. Feist" ,
title: "The Hobbit", author: "J.R.R Tolkien"
],
addBook: function ( book )
service.books.push( book );
$rootScope.$broadcast( \'books.update\' );
return service;
]); 参考技术A 如果我想实现这样一个功能,当一个input失去光标焦点时(blur),执行一些语句,比如当输入用户名后,向后台发ajax请求查询用户名是否已经存在,好有及时的页面相应。
输入 camnpr
angularjs directive input focus
失去焦点后提示 camnpr 这个用户名已经存在
angularjs directive input focus用户名已经存在
HTML代码如下:
<body ng-controller="MainCtrl">
<lable>用户名:
<input type="text" ng-model="username" ng-blur="checkUsername()" />
<span style="color:red;" ng-show="usernameAlreadyExist">用户名已经存在</span>
</lable>
</body>
controller和directive的定义
app.controller('MainCtrl', function($scope)
$scope.checkUsername = function()
//send ajax to check on server
if ($scope.username === 'hellobug')
$scope.usernameAlreadyExist = true;
);
app.directive('ngBlur', function($document)
return
link: function(scope, element, attrs)
$(element).bind('blur', function(e)
scope.$apply(attrs.ngBlur);
);
)
在上面的例子里,directive返回对象里定义的link方法在blur事件触发时执行了scope上的checkUsername()方法。
如果是只有link方法,也可以简单的写成下面这种形式~直接返回link对应的function~
directive的简单写法
app.directive('ngBlur', function($document)
return function(scope, element, attrs)
$(element).bind('blur', function(e)
scope.$apply(attrs.ngBlur);
);
;
)
再来这样一个功能,我想让内容为哈哈哈哈的dom元素重复n遍,n是自定义的,以达到某种满屏大笑丧心病狂的效果 -_-,我知道ng-repeat就已经能干这事儿了,但是如果自己实现一下呢~
HTML
<ul repeater="20">
<li>哈哈哈哈</li>
</ul>
directive的定义
app.directive('repeater', function($document)
return
restrict: 'A',
compile: function(element, attrs)
var template = $(element).children().clone();
for(var i=0; i<attrs.repeater - 1; i++)
$(element).append(template.clone());
);
在上面例子的compile方法里,子元素被复制成了repeater制定的数量。
什么时候用compile,什么时候用link呢,或者两者可不可以一起用呢?
先从directive是如何在angular手下生效的说起吧~
编译三阶段:
1. 标准浏览器API转化
将html转化成dom,所以自定义的html标签必须符合html的格式
2. Angular compile
搜索匹配directive,按照priority排序,并执行directive上的compile方法
3. Angular link
执行directive上的link方法,进行scope绑定及事件绑定
为什么编译的过程要分成compile和link?
简单的说就是为了解决性能问题,特别是那种model变化会影响dom结构变化的,而变化的结构还会有新的scope绑定及事件绑定,比如ng-repeat
compile和link的形式
compile
function compile(element, attrs, transclude) ...
在compile阶段要执行的函数,返回的function就是link时要执行的function
常用参数为element和attrs,分别是dom元素和元素上的属性们,其它的以后细说
较少使用,因为大部分directive是处理dom元素的行为绑定,而不是改变它们
link
function link(scope, element, attrs, controller) ...
在link阶段要执行的函数,这个属性只有当compile属性没有设置时才生效
常用参数为scope,element和attrs,分别是当前元素所在的scope,dom元素和元素上的属性们,其它的以后细说
directive基本上都会有此函数,可以注册事件,并与scope相绑
compile和link的使用时机
compile
想在dom渲染前对它进行变形,并且不需要scope参数
想在所有相同directive里共享某些方法,这时应该定义在compile里,性能会比较好
返回值就是link的function,这时就是共同使用的时候
link
对特定的元素注册事件
需要用到scope参数来实现dom元素的一些行为
以上是关于java中 啥时候 在定义的时候 用 public void ?啥时候用 public static void? 还有如果需要打印,一定需的主要内容,如果未能解决你的问题,请参考以下文章
在java中创建一个类的时候,如果前面不写public ,那么这个类会被默认成啥类型?
JAVA啥时候需要NEW个对象,啥时候不用NEW可以直接用类名.方法?