黑马程序员技术交流社区
标题:
static类和普通类到底有什么区别啊?谁能用通俗的语言给...
[打印本页]
作者:
sangyuan
时间:
2015-8-10 09:34
标题:
static类和普通类到底有什么区别啊?谁能用通俗的语言给...
本帖最后由 sangyuan 于 2015-8-10 17:52 编辑
public class Test9 {
public static void main(String ars[]) {
Test9 t = new Test9();
t.factorial(1000);
// factorial(1000); //这样写就报错,说应将阶乘的数学运算原理封装成对象,为啥啊!!!
}
//将阶乘的数学运算原理封装成对象
public void factorial(int number) {
//创建一个大数对象
BigInteger result = new BigInteger("1");
//利用循环计算1000!的值
for (int i = 1; i <= number; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
// 相当于result * = num;,但是大数不是基本数据类型,不能使用*运算符,用独有的方法
result = result.multiply(num);
}
//将获得的值转成字符串
String str = result.toString();
//调用方法,获取res中一共有多少个0
int zeroNum = Countzero(str);
//输出结果
System.out.println(number + "的阶乘为:" + "\n" + str);
System.out.println(number + "的阶乘中所有的0的个数:" + zeroNum);
}
// 求阶乘结果所有的0的个数
public int Countzero(String str) {
int count = 0;
String regex = "0";
//将给定的正则表达式即“0”编译到具有给定标志的模式中
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str); //str为要匹配的序列
//尝试查找与该模式匹配的输入序列的下一个子序列,
//当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。
while (m.find()) {
count++;
}
return count;
}
}
复制代码
作者:
Clouddd
时间:
2015-8-10 09:42
首先呢,static是”静态“、”全局“的意思。它可以用来修饰变量,方法还有代码块等。
只要你明白一点:被static修饰的代码会在类被JVM编译的同时会加载到内存里面。
所以被static修饰的方法和变量都属于静态的,都是被所有该类的实例所共享,即被static修饰的成员变量和成员方法独立于该类的任何对象。它不依赖类特定的实例,被类的所有实例共享。
static修饰的代码块也是一样,在编译的同时也会被加载到内存。举个栗子:对操作数据库的代码在整个程序过程中只需要被加载一次,就会选择把加载数据库的代码放在static中。
然后你有这着这个思想后,经过一些代码练习很快就可以掌握它啦,希望对你有用~
作者:
code_linux
时间:
2015-8-15 13:50
看到标题毫不犹豫的进来了,看到代码毫不犹豫的醉了。。。表示竟然看不懂了{:2_33:}
作者:
boboyuwu
时间:
2015-8-15 14:49
JAVA中调用成员方法都是对象名.方法()这就是面向对象思想,你那直接调用方法名是C语言的面向过程,这点需要转换,方法名前面加上static,就可以直接用方法名调用了,知道为什么直接用方法名会出错不,因为你方法在类中只有创建一个对象分配空间存放方法才可以调用,你直接调用没有分配空间方法都不在内存中杂用啊,内存中啥都没有啊
作者:
pengbeilin
时间:
2015-8-15 15:06
同一个类中,静态只能掉用静态(静态函数只能调用静态函数,静态函数只能调用静态成员)
public static void main(String ars[]) {
Test9 t = new Test9();//这里是通过对象调用
t.factorial(1000);
// factorial(1000); //这样写就报错,说应将阶乘的数学运算原理封装成对象,为啥啊!!!
//为什么报错?主函数是静态的,你直接去调用非静态的函数!肯定会报错!你把下面的函数加上静态再试试
}
复制代码
作者:
zhao1991
时间:
2015-8-15 17:42
static作用于类是只能用于内部类,其地位和类的静态成员一样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2