首页编程java编程在java中什么叫字段(java "字段"啥意思)

在java中什么叫字段(java "字段"啥意思)

编程之家 2023-10-14 101次浏览

各位老铁们,大家好,今天由我来为大家分享在java中什么叫字段,以及java "字段"啥意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

在java中什么叫字段(java "字段"啥意思)

java "字段"啥意思

public final static InputStream in= nullInputStream();

nullInputStream是这样实现的:

private static InputStream nullInputStream() throws NullPointerException{

在java中什么叫字段(java "字段"啥意思)

if(currentTimeMillis()> 0)

return null;

throw new NullPointerException();

在java中什么叫字段(java "字段"啥意思)

}

他不是返回null,就是抛出异常,如何初始化in呢?

解答:

看了一下java.lang.System的源代码.

System类里有大量的native方法,是调用本地代码的,这些代码很可能是由虚拟机来调用的.

System类的开头有一段:

static{

registerNatives();

}

这段代码会在虚拟机启动的时候就执行,它在虚拟机里注册System需要使用的一些本地代码

比如:

private static native Properties initProperties(Properties props);

private static native void setOut0(PrintStream out);

在windows下的话,它就告诉虚拟机到哪个dll文件里去找相应的实现

>然而,我知道out是一个PrintStream的对象,但我查看了有关的原代码:public final static PrintStream out= nullPrintStream();

>public final static InputStream in= nullInputStream();

在nullInputStream()方法里有注释解释为什么会设置为空:

/**

* The following two methods exist because in, out, and err must be

* initialized to null. The compiler, however, cannot be permitted to

* inline access to them, since they are later set to more sensible values

* by initializeSystemClass().

*/

private static InputStream nullInputStream() throws NullPointerException{

if(currentTimeMillis()> 0)

return null;

throw new NullPointerException();

}

也就说in, out, and err初始化为null,然后会在后来由initializeSystemClass()方法类初始化成有意义的值

/**

* Initialize the system class. Called after thread initialization.

*/

private static void initializeSystemClass(){

props= new Properties();

initProperties(props);

sun.misc.Version.init();

FileInputStream fdIn= new FileInputStream(FileDescriptor.in);

FileOutputStream fdOut= new FileOutputStream(FileDescriptor.out);

FileOutputStream fdErr= new FileOutputStream(FileDescriptor.err);

setIn0(new BufferedInputStream(fdIn));!!!

setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));!!!

setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));!!!

// Enough of the world is now in place that we can risk

// initializing the logging configuration.

try{

java.util.logging.LogManager.getLogManager().readConfiguration();

} catch(Exception ex){

// System.err.println("Can′t read logging configuration:");

// ex.printStackTrace();

}

// Load the zip library now in order to keep java.util.zip.ZipFile

// from trying to use itself to load this library later.

loadLibrary("zip");

// Subsystems that are invoked during initialization can invoke

// sun.misc.VM.isBooted() in order to avoid doing things that should

// wait until the application class loader has been set up.

sun.misc.VM.booted();

}

in,out,err就是在以上方法以下三条语句里初始化的.

setIn0(new BufferedInputStream(fdIn));!!!

setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));!!!

setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));!!!

private static native void setIn0(InputStream in);

~~~~~~~

这是个native函数,是前面registerNatives()的时候注册了的.这个函数应该是把实际连接到输入输出设备的句柄传给虚拟机并赋值给in,out,err

至于:

>InputStream是个抽象的类,怎么能使用char=(char)System.in.read()读入一个字符

我想你还没有明白什么是面向对象.

看看下面代码,我用OutputStream(也是抽象类,跟InputStream对应的输出类)以方便演示:

import java.io.IOException;

import java.io.OutputStream;

public class HelloWorld{

public OutputStream out=null;

public void setOutputStream(OutputStream out){

this.out=out;

}

public static void main(String[] args) throws IOException{

HelloWorld h=new HelloWorld();

PrintStream myOut=System.out;//System.out是一个PrintStream

h.setOutputStream(myOut);

h.out.write("hello,world".getBytes());//一般没人这么写的

}

}

以上代码执行后会输出hello,world

h.out是OutputStream,也是个抽象类,为什么能write(o)呢?

因为PrintStream是OutputStream的子类,所以能被"当作"OutputStream传给h.setOutputStream(myOut);

h.out.write执行的时候实际上是调用这个传进来的PrintStream实例的write方法

同样System.in和out肯定也是在initializeSystemClass()的时候被赋予了一个实际的可用的子类

要能体会到面向对象的好处,就要逐渐适应"对接口编程"的思想,相同接口的对象可以根据需要方便的替换.

比如,我刚才传了一个PrintStream,因此HelloWorld输出到了屏幕上.我如果传给OutputStream的另一个子类FileOutputStream,就会输出到文件里

>还有为什么不是说字符流:writer和reader一般用于UniCode的读写吗?为什么键盘的输入用reader类呢?

不知道你在哪里看到说writer和reader一般用于UniCode的读写

Java中什么叫做常量字段值它有什么意义

常量代表程序运行过程中不能改变的值。

常量在程序运行过程中主要有2个作用:

1.代表常数,便于程序的修改(例如:圆周率的值)

2.增强程序的可读性(例如:常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其数值分别是1、2、3和4)

常量的语法格式和变量类型,只需要在变量的语法格式前面添加关键字final即可。在Java编码规范中,要求常量名必须大写。

则常量的语法格式如下:

final数据类型常量名称=值;

final数据类型常量名称1=值1,常量名称2=值2,……常量名称n=值n;

例如:

final double PI= 3.14;

final char MALE=‘M’,FEMALE=‘F’;

在Java语法中,常量也可以首先声明,然后再进行赋值,但是只能赋值一次,示例代码如下:

final int UP;

UP= 1;

什么是字段

问题一:字段是什么意思? 5分字段?

如果说龚是数据库里的字段,那么所说的就是一列。

一张数据表分为行和列,一行就是一跳记录。可能有很多个字段,就是各个属性。比如一张Student表,里面有studentname,id等字段,是站一列的。他们合起来组成一条记录。

问题二:字段是什么意思?字段应该是数据库的术语吧?表示数据表中的一个数据列,如用户数据表中的name,logonid等......

问题三:字段是什么什么字段应该是数据库的术语吧?表示数据表中的一个数据列,如用户数据表中的name,logonid等......

问题四:关键字和字段的区别是什么? 30分字段指的是同一类型的信息,比如说李同学的姓名,王同学的姓名。。。。指一些系列的,是人们逻辑上认为同一类型的信息。这些信息的总和就是“字段”,然后大家对它做一个总结,取名叫做“字段名”。

而关键字是针对“关系”也就是“表格”来说的,一个表主要表现的内容,就好像一篇文章一样,有很多种类型的内容即很多“字段名”,大家将其中某些最少,最精炼的能概括整个关系的字段名挑选出来,将其作为“关键字”――这个就是所说的关键字,所以说它不是单纯的一个单词,而是一个或是多个字段名的***。

而为什么普遍学习的时候总认为关键字只有一个,那是因为关键字下面还有分类:主关键字,候选关键字等等,而很多时候用到的关键字就是一个,也就是主关键字,这时关键字就会和字段名重合了。

顺带一提,字段的命名方法不可以以数字开头,但是中间包含数字可以,开头下划线也可以。

问题五:什么是字段数啊??对于数据表,每一列就是一个字段(比如有一列id,id就是一个字段)。

问题六:全字段是什么意思自定义变量全名。

问题七:什么是字段、字段名、字段类型、字段宽度、字段值?这是数据库软件里的概念,教材书上有。

字段又称为属性,二维表的一列称为一个字段(属性),在数据库中的表中的每一列的每一个名称,就是字段名

字段类型也是数据类型,如int,char,varchar,bit等等。

字段宽度表示这个字段能存储的最大长度。

字段列中的记录就是字段值。

问题八:sql语句中字段带(+)是什么意思?这是oracle对sql92标准的扩展

c表对a表左链接...

标准写法是:

select* from a left join c on(a.good_type= c.good_type);

问题九:什么是数据字段在数据库中,大多数时,表的“列”称为“字段”,但是有时候,字段也不是表中的列,比如用as将列的内容经计算,“存入”另一个字段。如:一个表T”中只有列ID”,内容为int值1。

问题十:C#中字段是什么东西?字段和属性是C#面向对象模式中的两个概念。

字段(field)用来存储数值或对象的真正实体简单说是私有变量(不一定是私有...)

属性(property)对字段的封装(也不一定--)有get段落和set段落通常是公开的通常get段和set段执行过程都是轻量的(这是一个语义约定也是C#不同于java的地方重量级耗时的获取也要用函数来表达而不是属性 java就没这种语义了一律get--)

字段和属性都属于类的成员

我说的不一定是因为通常它们是这么用的但是在不同设计模式和上下文场合字段的私有会造成取值赋值的效率降低比如你不得不对一个占用64字节的结构体频繁取值赋值就用公开字段好了...

属性是个非常奇妙的东西它包含着写段落和读段落所以又叫读写器正常的意义是field的wapper因为你可以通过只写get段或set段对字段达到只读和只写的访问控制甚至可以对get和set加***问权限修饰符比如protected get; private set;

因为get和set段像是两个函数一样所以你可以在里面写很多奇怪的东西达到不同的设计期望比如get里可以先判断if(字段==null) new() return字段;的这种单例模式设计 set里则可以加上事件触发和有效性判断等逻辑所以合理的利用属性这种语法对C#程序设计很重要

字段命名加上下划线是类似匈牙利命名法的要求表示它是private的

不过因为C#是大小写敏感的你完全可以对字段采用camel命名法而对属性采用pascal命名法加以区分但是vb不一样为了两种语言风格统一你可以采用下划线的方式进行区分这只是开发风格的问题

关于在java中什么叫字段和java "字段"啥意思的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java后台具体做什么?java主要是做什么的 第一次世界大战时间 第一次世界大战时间和第二次世界大战时间