在JAVA中并没有全局变量,因此static变量也称作静态变量,静态变量和非静态变量有很大的区别,只要一个成员变量使用了static关键字,那么这个变量就不再属于自己,而是属于整个类。静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。
static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。静态代码块的一个典型用例就是一次性的对静态成员变量进行赋值。
Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected,包括包访问权限这几个关键字。静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问。static final用来修饰成员变量和成员方法,对于变量,表示一旦给值就不可修改,并且通过类名可以访问。对于方法,表示不可覆盖,并且可以通过类名直接访问。在使用static关键字时,也要注意仅能调用其他的static 方法,不能以任何方式引用this 或super关键字。
去掉static之后的子方法报错是因为static是静态的,属于公共的,不需要实例化,而去掉static后就需要将类实例化之后才能使用。例如如下代码:
public class SquareIntTest {
public static void main(String[] args) {
int result;
for (int x = 1; x <= 10; x++) {
result = square(x);
System.out.println("The square of " + x + " is " + result + "\n");
}
}
// 自定义求平方数的静态方法
public static int square(int y) {
return y * y;
}
}
再去掉static之后会报错,应该改为
public class SquareIntTest {
public static void main(String[] args) {
int result;
SquareIntTest t=new SquareIntTest();
for (int x = 1; x <= 10; x++)
{
result = t.square(x);
System.out.println("The square of " + x + " is " + result + "\n");
}
}
// 自定义求平方数的方法
public int square(int y) {
return y * y;
}
}
计算机使用固定的位数进行储存数据,因此能处理的数值大小是有限的,当超过这一数值时会进行截断,从而失去精准度。在进行递归,或者大数据运算以及带小数的精确运算时,需要用到BigDecimal类,这个类能够对超过16位有效位的数进行精确的运算,不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。加法:add()减法:subtract() 乘法:multiply 除法:divide() 同时要注意在调用除法时不仅要将除数作为参数,还要将进行完除法后需要保留的小数位数以及四舍五入等规则进行输入。在创建BigdDecimal对象时也不能直接创建,而是要调用方法将int,double,long,String等类型的变量变为BigDecimal对象,
标签:知识点,变量,int,静态,static,result,public From: https://www.cnblogs.com/wrf1/p/16705155.html