Redian新闻
>
问一个java的函数调用问题
avatar
问一个java的函数调用问题# JobHunting - 待字闺中
s*4
1
会写c++,只是拿leetcode一个例子来问一下java的函数调用问题:
比如说我现在创建了两个文件:Solution.java和SolutionTest.java:
Solution.java:
public class Solution {
public int maxProfit(int[] prices) {
// Start typing your Java solution below
// DO NOT write main() function
if (prices.length < 2)
return 0;
int maxDiff = 0;
int minValue = prices[0];
for (int i = 1; i < prices.length; ++i) {
if (prices[i] < minValue)
minValue = prices[i];
if (prices[i] - minValue > maxDiff)
maxDiff = prices[i] - minValue;
}
return maxDiff;
}
}
SolutionTest.java:
public class SolutionTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution solution = new Solution(); // create a new object
int[] prices = {-1, 1, 2};
System.out.println("Maximum profit is " + solution.maxProfit(prices)
);
}
}
程序可以通过。我的问题是,这样写是不是一种professional的方法?
就是先Solution solution = new Solution();
然后调用solution.maxProfit(prices)
总觉得这个maxProfit函数其实可以是static的。如果我刚才的那个方法不是
professional的方法,怎么改比较好?
非常感谢! :)
avatar
z*e
2
什么方法不能写成static的?
用古德霸的话说就是
当你把全部的东西都static了之后
就跟c很像了
static和对象方法的区别在于
一般情况下,只有工具类会被static
最常见的也就是util结尾的类的方法会被static起来
其它一概都是跟对象绑定
你把方法写成static主要是为了不new那一个对象
以节省memory吧?
那在server side,有专门的framework帮你节省memory
比如spring,所以也不需要你刻意去搞成static
也就是说只有系统层面的方法才需要你去static
这个层级很高,一般来说,除了util,其它的没有必要static
avatar
z*e
3
professional的写法
如果是core java
Solution s = SolutionBuilder.build();
如果是j2ee
@Autowire
Solution s;
@Inject
Solution s;
@Validate
Solution s;
等等等等,写法很多,看具体情况具体分析,跟使用的framework也有关系
avatar
f*t
4
A家用spring + junit
test class里主要内容如下:
@Autowrire
Solution s;
@Test
public void testMaxProfit() {
int[] prices = ...
int result = s.maxProfit(prices);
AssertEqual(result, ...);
}
avatar
l*b
5
一看就ID啊。。。。太恐怖了啊。。。。ID在dynamic lang里面debug起来挺头晕的。
avatar
l*b
6
一看就DI啊。。。。太恐怖了啊。。。。DI在dynamic lang里面debug起来挺头晕的。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。