GVKun编程网logo

休眠:java.lang.Integer和int之间有什么区别?(java sleep和wait)

20

此处将为大家介绍关于休眠:java.lang.Integer和int之间有什么区别?的详细内容,并且为您解答有关javasleep和wait的相关问题,此外,我们还将为您介绍关于Angular2中Se

此处将为大家介绍关于休眠:java.lang.Integer和int之间有什么区别?的详细内容,并且为您解答有关java sleep和wait的相关问题,此外,我们还将为您介绍关于Angular 2中Service和Component之间有什么区别?、angular – EventEmitter和EventEmitter之间有什么区别?、delphi – 控件的Owner和Parent之间有什么区别?、Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?的有用信息。

本文目录一览:

休眠:java.lang.Integer和int之间有什么区别?(java sleep和wait)

休眠:java.lang.Integer和int之间有什么区别?(java sleep和wait)

两者之间有什么明显的区别

<property name="pwdRetryCount" type="java.lang.Integer">    <column name="pwd_retry_count" /></property>

<property name="pwdRetryCount" type="int">    <column name="pwd_retry_count" /></property>

答案1

小编典典

它们仅在处理空值时有明显的区别。

这是因为int是原始数据类型不能为其分配null,而java.lang.Integer它的包装器类 int 可以接受null。

因此,如果pwd_retry_countcolumn可为空并且您用于 int映射实体对象,则对于pwd_retry_countnull 的记录,
将发生错误,因为 int无法存储null。

Angular 2中Service和Component之间有什么区别?

Angular 2中Service和Component之间有什么区别?

它们在不同的地方(声明和提供者)声明.我知道该服务将@Injectable()注入到使用该服务的组件的构造函数中.但为什么必须这样呢?为什么我们不能在一个地方宣布?一个人可以做什么功能,另一个不能?
零件

它基本上是一个带有装饰器@Component的类,它告诉angular该类是一个组件.

它们始终与HTML模板和一些CSS相关联.

当html的一部分以类似的功能重复时,最好将它放入一个组件中.可以在需要相同功能的地方调用此组件.

服务

它们是整个应用程序中某些常用功能的中心单元.

它们是具有函数和成员的简单类.

使用时 – 存在重复代码,访问/存储数据.

与@ Component和@Directive不同,服务器不存在装饰器. @Injectable仅在组件,指令或其他服务需要使用一个服务时使用.

angular – EventEmitter和EventEmitter之间有什么区别?

angular – EventEmitter和EventEmitter之间有什么区别?

有时我们可以有一个案例,应该省略泛型变量.
像这样:

@Component( ... )
class MyComponent {

  @Output()
  public cancel = new EventEmitter<undefined>();

  private myFoo() {
    this.cancel.emit(); // no need to pass any value
  }
}

所以,问题是:哪种方法更好地定义EventEmitter类型:
EventEmitter<未定义>或EventEmitter< void>.

> void更好,因为.emit()调用中没有参数.
> undefined更好.emit()是相同的.emit(undefined)

你有什么意见?

解决方法

根据TypeScript文档,void类型接受undefined和null – 因此,以下代码有效:

@Component( ... )
class MyComponent {

  @Output()
  public cancel = new EventEmitter<void>();

  private myFoo() {
    this.cancel.emit();
    this.cancel.emit(undefined);
    this.cancel.emit(null);
  }
}

而使用EventEmitter< undefined>,你只能传递未定义或没有参数,这在你的情况下可能更正确 – 说,我看不到任何重大问题只是因为你传递null给你的发射器不管怎样都不期待价值,所以我很想选择无效,因为它是较短的选择.

delphi – 控件的Owner和Parent之间有什么区别?

delphi – 控件的Owner和Parent之间有什么区别?

我对Delphi VCL控件的两个属性有点好奇.

每个组件在运行时都有2个属性作为Owner和Parent.任何人都可以帮我理解两者之间的区别吗?它们如何被windows用于显示控件或表单?

解决方法

所有者

Owner是TComponent中引入的属性,Owner本身具有TComponent类型.所有者主要用于管理设计组件的生命周期.也就是说,您放置在表单设计器(或实际上是其他设计表面)上的组件,其生命周期完全由框架管理. documentation说:

Indicates the component that is responsible for streaming and freeing this component.

创建表单时,流式处理框架会解析.dfm文件并实例化其中列出的组件.通常使用指定为表单的所有者创建这些组件.

在组件生命的另一端是破坏.当一个组件被销毁时,它也会破坏它拥有的所有组件.为了一个具体的例子,考虑一个位于TForm上的TButton,在设计时放置在那里.流式框架创建按钮,将其所有者设置为表单.作为TComponent的后代,该表单维护着它拥有的所有组件的列表.当表单被销毁时,它会遍历所拥有的组件列表并销毁它们.按钮以这种方式被破坏.

这有很多细微差别:

>组件不需要由表单拥有.例如,在运行时创建的组件由传递给构造函数的任何组件拥有.
>组件不需要拥有者,您可以将nil传递给构造函数.在这种情况下,程序员仍然负责销毁组件.
>可以在组件的生命周期内更改所有权.

因为流式框架实例化组件,所以TComponent的构造函数被声明为virtual:

constructor Create(AOwner: TComponent); virtual;

如果从TComponent后代派生,并且希望将派生组件放置在设计图面上,则必须遵守此虚拟构造函数.如果在TComponent后代中定义构造函数,则它必须覆盖此虚构造函数.

值得指出的是,Win32有一个完全不同的窗口所有者概念,不应该与同名的VCL概念混淆. Windows documentation说:

Owned Windows

An overlapped or pop-up window can be owned by another overlapped or
pop-up window. Being owned places several constraints on a window.
– An owned window is always above its owner in the z-order.
– The system automatically destroys an owned window when its owner is destroyed.
– An owned window is hidden when its owner is minimized.

Only an overlapped or pop-up window can be an owner window; a child
window cannot be an owner window.

在VCL术语中,PopupParent属性公开了此概念.该属性是在Delphi 7之后引入的,因此无法使用.在Delphi 7中,框架设置了窗口所有者,并没有提供简单的机制来覆盖框架的选择.如果确实需要影响窗口所有权,则必须覆盖CreateParams并设置Params.WndParent.遗憾的是,在VCL处理Delphi 7中的所有权时存在许多问题,有时需要在这些有点血腥的细节中进行处理.

为了表明混淆是多么容易,VCL documentation说:

WndParent: The window handle of the parent window. This is the same as the Handle property of the parent control.

这是完全错误的.对于顶级窗口,这是所有者而不是父级.

Parent是TControl中定义的属性,类型为TWinControl.广义上,此属性用于公开父控件和子控件的Win32概念. Windows documentation说:

A window can have a parent window. A window that has a parent is called a child window. The parent window provides the coordinate system used for positioning a child window. Having a parent window affects aspects of a window’s appearance; for example,a child window is clipped so that no part of the child window can appear outside the borders of its parent window. A window that has no parent,or whose parent is the desktop window,is called a top-level window.

从本质上讲,VCL Parent属性直接映射到Win32父级概念.

但请注意,Parent是在TControl中定义的.现在,TControl没有窗口化,因此在Win32意义上TControl不是子控件,因为Win32窗口的子窗口本身就是窗口.因此,具有已定义父级的TControl是VCL意义上的子级,称为非窗口子控件.这些非窗口控件将自身绘制为其父级绘制处理程序的一部分.这种控制的典型例子是TLabel.

请注意,当窗口控件(即TWinControl后代)被销毁时,它也会销毁其所有子节点.

TWinControl后代可以使用ControlCount和Controls []属性枚举其子项.这些列举了窗口和非窗口的子项.

Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?

Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?

接着上篇继续更新。

/*请尊重作者劳动成果,转载请标明原文链接:*/

/* https://www.cnblogs.com/jpcflyer/p/10759447.html* /

题目一:Hashtable,HashMap,TreeMap有什么区别?

一般回答:
Hashtable 是早期 Java 类库提供的一个哈希表实现,本身是同步的,不支持 null 键和值,由于同步导致的性能开销,所以已经很少被推荐使用。
HashMap 是应用更加广泛的哈希表实现,行为上大致上与 HashTable 一致,主要区别在于 HashMap 不是同步的,支持 null 键和值等。通常情况下,HashMap 进行 put 或者 get 操作,可以达到常数时间的性能,所以它是绝大部分利用键值对存取场景的首选,比如,实现一个用户 ID 和用户信息对应的运行时存储结构。
TreeMap 则是基于红黑树的一种提供顺序访问的 Map,和 HashMap 不同,它的 get、put、remove 之类操作都是 O(log(n))的时间复杂度,具体顺序可以由指定的 Comparator 来决定,或者根据键的自然顺序来判断。
 
扩展一下,看看JAVA集合的全集。
上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。
发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说如果是先Iterator接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历后的元素不会在遍历到,通常无序集合实现的都是这个接口,比如HashSet,HashMap;而那些元素有序的集合,实现的一般都是LinkedIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个元素,比如ArrayList。
还有一个特点就是抽象类的使用。如果要自己实现一个集合类,去实现那些抽象的接口会非常麻烦,工作量很大。这个时候就可以使用抽象类,这些抽象类中给我们提供了许多现成的实现,我们只需要根据自己的需求重写一些方法或者添加一些方法就可以实现自己需要的集合类,工作流昂大大降低。

题目二:Vector,ArrayList,LinkedList有什么区别?

一般回答:
Vector 是 Java 早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector 内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。
ArrayList 是应用更加广泛的动态数组实现,它本身不是线程安全的,所以性能要好很多。与 Vector 近似,ArrayList 也是可以根据需要调整容量,不过两者的调整逻辑有所区别,Vector 在扩容时会提高 1 倍,而 ArrayList 则是增加 50%。
LinkedList 顾名思义是 Java 提供的双向链表,所以它不需要像上面两种那样调整容量,它也不是线程安全的。
 
继续扩展一下,还是先看上题中的集合框架图。
我们可以看到 Java 的集合框架,Collection 接口是所有集合的根,然后扩展开提供了三大类集合,分别是:
List,也就是我们前面介绍最多的有序集合,它提供了方便的访问、插入、删除等操作。
Set,Set 是不允许重复元素的,这是和 List 最明显的区别,也就是不存在两个对象 equals 返回 true。我们在日常开发中有很多需要保证元素唯一性的场合。
Queue/Deque,则是 Java 提供的标准队列结构的实现,除了集合的基本功能,它还支持类似先入先出(FIFO, First-in-First-Out)或者后入先出(LIFO,Last-In-First-Out)等特定行为。这里不包括 BlockingQueue,因为通常是并发编程场合,所以被放置在并发包里。
每种集合的通用逻辑,都被抽象到相应的抽象类之中,比如 AbstractList 就集中了各种 List 操作的通用部分。这些集合不是完全孤立的,比如,LinkedList 本身,既是 List,也是 Deque 哦。
如果阅读过更多源码,你会发现,其实,TreeSet 代码里实际默认是利用 TreeMap 实现的,Java 类库创建了一个 Dummy 对象“PRESENT”作为 value,然后所有插入的元素其实是以键的形式放入了 TreeMap 里面;同理,HashSet 其实也是以 HashMap 为基础实现的,原来他们只是 Map 类的马甲!

题目三:int和Integer有什么区别?

一般回答:
int 是我们常说的整形数字,是 Java 的 8 个原始数据类型(Primitive Types,boolean、byte 、short、char、int、float、double、long)之一。 Java 语言虽然号称一切都是对象,但原始数据类型是例外。
Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算、int 和字符串之间转换等。在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java 可以根据上下文,自动进行转换,极大地简化了相关编程。
 
扩展:
这里很容易就想到装箱和拆箱。 装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
这个过程是自动执行的,那么我们需要看看它的执行过程:
public class Main {
public static void main(String[] args) {
//自动装箱
Integer total = 99;
//自定拆箱
int totalprim = total;
}
}

反编译class文件之后得到如下内容:

javap -c StringTest
Integer total = 99; 
执行上面那句代码的时候,系统为我们执行了: 
Integer total = Integer.valueOf(99);
int totalprim = total; 
执行上面那句代码的时候,系统为我们执行了: 
int totalprim = total.intValue();
那么什么时候会进行封箱拆箱呢?
当一个基础数据类型与封装类进行==、+、-、*、/运算时,会将封装类进行拆箱,对基础数据类型进行运算。
需要注意的是:
1. 装箱操作会创建对象,频繁的装箱操作会消耗许多内存,影响性能,所以可以避免装箱的时候应该尽量避免。
2.自动拆箱实际是jvm 调用了 intValue 方法,所以性能上不会有影响。
3.除double 和float 两种类型以外,其他基本类型入Integer值 在 -128 ~ 127之间时不会新建一个Integer 对象而是从缓存中获取。所以在做 == 判断时 要注意值得大小,如果超过范围,则两个值 虽然一样但  == 比较的结果会是FALSE。
4.Integer 类型的比较最好用 compare 。
5.比较两者(int 与 Integer变量) 时,可以用拆箱 (用intValue方法),没影响的。

原文出处:https://www.cnblogs.com/jpcflyer/p/10759447.html

今天的关于休眠:java.lang.Integer和int之间有什么区别?java sleep和wait的分享已经结束,谢谢您的关注,如果想了解更多关于Angular 2中Service和Component之间有什么区别?、angular – EventEmitter和EventEmitter之间有什么区别?、delphi – 控件的Owner和Parent之间有什么区别?、Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?的相关知识,请在本站进行查询。

本文标签: