1. java中的静态方法有什么作用
静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率!希望对楼主有帮助!
2. java中静态变量储存的问题
java静态变量是存储在内存中的,需要依赖于程序启动之后使用,如果程序都结束了自然就没有了,如果想要长时间存储就要使用数据库或者文件之类的存储到你的硬盘上去
3. DBUtil中使用为什么要使用静态方法getConn() 和使用非静态方法相比哪个效率更高请看问题补充
很抱歉,你的代码没法实现你在问题补充中的那种功能,以下代码可以实现你要的功能:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private DBUtil(){
}
private static Connection conn;
public static Connection getConn() {
try {
if(conn==null||conn.isClosed()){
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "sharing02";
String passw = "sharing";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, user, passw);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
4. php 怎么理解常量,对象中的静态变量在内存储存是否多个用户同时使用一个
常量只能使用在一个HTTP请求,即同一个进程。多个用户肯定是不行,每个用户的一个操作就是一个HTTP请求,一个进程。如果要多个用户使用同一个的话可以用缓存,也可以用写入文件、数据库之类记录起来,多个用户需要用到就去读取。
5. 再继续请教:数据库读取类是静态方法好还是实例化好
1、静态方法属于类所有,类实例化前即可使用;2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存;4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;6、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。主要区别:静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用。如:publicclassPer{publicstaticStringgetType(){return"人类";}publicStringgetName(){return"张三";}}上面这个类中的getType方法,在没有new对象前这就可以这样用:Stringtype=Per.getType();//type="人类";而getName方法则不能这样使用,编译都不会通过getName必须这样:Perp=newPer();Stringname=p.getName();//name="张三";当然,getType方法也可能通过对象调用:Stringtype=p.getType();//type="人类";
6. 请问C语言中静态内存与动态内存呀(最好有例子)
静态的内存使用的是栈空间内存,不用程序员自己来分配.动态内存由程序员根据需要来自己分配并收回.
最大的区别在于动态的内存分配时候会用new关键字或malloc或calloc函数,之所以要程序员自己来分配内存是由于有时候不能确定程序要使用多少内存,比如要通过用户或者文件或者数据库中的查询结果来确定使用多少数据,这时候程序员无法在程序的编写的时候就把内存给固定分配出来.这时候必须得让程序在运行的时候自己来为自己找到可用的内存,就一定要用动态的方式来分配内存.
举个例子,根据用户的输入一个整数来确定用户要输入的数组维数,这个整数不是一定确定的数值,我们可以用一个变量n来表示,并用它接受用户的输入,再根据n来生成一个整数数组.程序不能写成int array[n];的形式,这样程序是不能编译通过的,这是因为n是一个不确定的数值.只能用new或malloc来通过用户的输入来分配内存.可以写成这样:
int n;
cout << "input n:";
cin >> n;
cout << endl;
int* iArray = new int[n];
for (int i = 0; i < n; i++)
{
cin >>iArray[i];
7. c# 为什么要合理使用静态类
判断这个很简单,就是从内存的优化方面去考虑.因为静态和非静态的不同的地方,就是静态的从程序一启动就会一直占用内存,而非静态的只在使用后(实例化)后才会占用内存.但是每实例化个一个对象时又会另外占用内存.
举个例子,比如说一个数据库的连接字段(string).因为要经常使用到它,这时我们可以用static.但是如果这时用非静态的话那就不合算了,因为每次调用到它时,又实例化一次.这样相比来说占用内存就比较大了.不划算.
像一个登录后台的方法,你只在登陆时候调用一次,就没有必要做成静态的了.那样一直驻存在内存中.在大型项目中,你如果都使用静态的那得要多少内存去支撑呀.嘿嘿
简单点,就是它经常要被调用时,就用静态的.相反则用非静态的.
8. 请教一个java中用静态方法访问数据库的问题。
是这样的,
访问数据库的方式写成静态,并不是所有的都是静态。
即,把数据库连接写成静态。
而查询、删除、修改不能写成静态。
这样后,所有的用户,连接是同一个。
9. static的方法怎么调用数据库
全局变量前加上关键字static,全局变量就定义成一个全局静态变量.,全局静态变量存储在静态存储区,在整个程序运行期间一直存在。全局静态变量在程序运行之前就存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化)。作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。
局部静态数据
在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。局部静态变量再程序执行到作用域时候,就会存在。
局部静态数据再内存中的静态存储区。
初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化)。
作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变。
静态函数
在函数返回类型前加static,函数就定义为静态函数。函数的定义和声明在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
函数的实现使用static修饰,那么这个函数只可在本cpp内使用,不会同其他cpp中的同名函数引起冲突。
warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰。
类的静态成员
静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。
静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在类的构造函数中初始化该成员,因为静态数据成员为类的各个对象共享,否则每次创建一个类的对象则静态数据成员都要被重新初始化静态成员可以被初始化,但只能在类体外进行初始化。 一般形式:数据类型 类名::静态数据成员名=初值。
静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。
静态成员属于整个类所有,不需要依赖任何对象,它在对象中不占用存储空间。
静态成员仍然遵循public,