java里面为啥总要new,不new为啥不行?scanner scancer=new scan

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里面为啥总要new,不new为啥不行?scanner scancer=new scan相关的知识,希望对你有一定的参考价值。

java里面为什么总要new,不new为什么不行?scanner scancer=new scaner(system.in)

JAVA语言是面向对象的,所以任何方法的调用都需要一个对象来执行,而new这个动作就是给类声明一个对象,这样才能通过对象来调用类里面的方法 。上面的那句scanner是指向new出来的对象的地址,这样就可以调用对象来执行一些方法。 参考技术A 你不用new关键字创建也是可以的,只要对反射技术有些了解就知道,创建实例对象也不是非要new关键字。我举个例子:
如原例子:Scanner input = new Scanner(System.in);
新例子:Scanner input = Scanner.class.getConstructor(InputStream.class).newInstance(System.in);
参考技术B new 是类的实例化, 就是新建一个类的对象 这样才能通过对象来调用类里面的方法 。
比如scanner.next();
参考技术C 首先讲 scanner 是sun公司 为我们提供的工具类, 就样就不需要我们自己些。用的时候 先为该类创建对象 然后使用它的方法和属性。 而new关键字就是 实例化对象用的。这个约定俗称。 参考技术D 就打个比方 为什么玩Java一定要装JDK?

我不装行吗?

要使用scanner类你就必须通过new关键字来实例化对象 就上面我说的你要玩java就必须装JDK
没有为什么

new java.util.Date() 得到的时间与系统时间不一样,为啥?

我用 这个 函数得到的时间是:
Sat Oct 20 12:05:56 GMT 2007

而,我系统的时间 却是 :

2007年10月20日 20:05

相差了8小时,为什么啊?? 我系统时区设置什么都是正确的阿!!! ??

GMT就是格林威治时间的意思,你用的是Date类的默认构造方法,没有加参数,默认的构造方法就是构造一个GMT时区的时间。 参考技术A new java.util.Date()得到的是格林威治时间,我们的北京时间比它晚8个小时,因为北京在东八区 参考技术B new Date()的到的是JVM的时间,一般来说应该是系统时间.如果有错误,则是JVM的BUG(这个是存在的情况).
所以你可以用Locale.SIMPLIFIED_CHINESE来指定你当前的时区(这里的是中国时区).
用new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE)来设置你显示的效果和时区最好.
参考技术C 同意楼上的,
并修正一下是
GMT 格林尼治标准时间
另外,一看这你就明白了
http://then9.com/java/then9000059.htm
参考技术D 你的这个问题系 系统 JVM的事,可以设置下时区,通过以下的语句:

import java.util.*;

TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz);

//显示Java能识别的系统中所有正确的时区
/**
String[] ids = TimeZone.getAvailableIDs();
for(int i = 0; i < ids.length; i++)
System.out.println(ids[i].toString());
*/本回答被提问者采纳

以上是关于java里面为啥总要new,不new为啥不行?scanner scancer=new scan的主要内容,如果未能解决你的问题,请参考以下文章

请问java里面为啥有时候声明对象的时候不用new??

java中用HSSFWorkBook创建的时候为啥这么创建不行啊

为啥在java中使用了static修饰词就不用NEW 对象了?(初学者求助)

字符串是 Java 中的对象,那么我们为啥不使用 'new' 来创建它们呢?

java new object.method() 为啥不报错? [关闭]

为啥我的eclipse安装了能打开,但是里面的new中没有创建java project的选项,我是小白,不要笑我。