当前位置: 首页 > wzjs >正文

国内b2b免费网站平台做网络推广有前途吗

国内b2b免费网站平台,做网络推广有前途吗,休闲零食网站建设+中企动力,设计师做私单网站目录 1.包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 2.泛型 2.1泛型的概念 2.2引出泛型 3.语法 4.泛型类的使用 5.泛型的上界 1.包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基…

目录

1.包装类

1.1 基本数据类型和对应的包装类

 1.2 装箱和拆箱

1.3 自动装箱和自动拆箱

2.泛型

2.1泛型的概念

2.2引出泛型 

3.语法

4.泛型类的使用 

5.泛型的上界


1.包装类

        在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。

1.1 基本数据类型和对应的包装类

 1.2 装箱和拆箱

nt i = 10;
// 装箱操作,新建⼀个 Integer 类型对象,将 i 的值放⼊对象的某个属性中 
Integer ii = Integer.valueOf(i);
Integer ij = new Integer(i);
// 拆箱操作,将 Integer 对象中的值取出,放到⼀个基本数据类型中 
int j = ii.intValue();

1.3 自动装箱和自动拆箱


可以看到在使用过程中,装箱和拆箱带来不少的代码量,所以为了减少开发者的负担,java提供了自动机制。

int i = 10;
Integer ii = i; // ⾃动装箱 
Integer ij = (Integer)i; // ⾃动装箱 
int j = ii; // ⾃动拆箱 
int k = (int)ii;

接下来我们看一道题

public static void main(String[] args) {Integer a = 127;Integer b = 127;Integer c = 128;Integer d = 128;System.out.println(a == b);System.out.println(c == d);
}

我们可以发现第一个等号输出true第二个输出false,这是为什么呢?

原因是,包装类的数据有一定地限制范围.下面我们看源码:

public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);//超出范围之后就会new一个新的对象出来}
private static class IntegerCache {static final int low = -128;//范围的最小值为-128static final int high;static final Integer[] cache;static Integer[] archivedCache;static {// high value may be configured by propertyint h = 127;//定义h=127String integerCacheHighPropValue =VM.getSavedProperty("java.lang.Integer.IntegerCache.high");if (integerCacheHighPropValue != null) {try {h = Math.max(parseInt(integerCacheHighPropValue), 127);// Maximum array size is Integer.MAX_VALUEh = Math.min(h, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// If the property cannot be parsed into an int, ignore it.}}high = h;//范围的最大值为127

    由于128超出了if语句的条件限制,所以就会new一个新的对象出来,它们指向的是不同的引用,而 == 比较的就是两个对象的地址是否想相同,所以第二个返回false.

2.泛型

2.1泛型的概念

       一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大,因此在JDK1.5引入的新的语法---泛型,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。

2.2引出泛型 

      实现⼀个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值

思路:
1. 我们以前学过的数组,只能存放指定类型的元素,例如:                                                         int[] array=new int[10]; String[] strs=new String[10];
2. 所有类的父类,默认为Object类,数组是否可以创建为Object?

class MyArray {public Object[] array = new Object[10];public Object getPos(int pos) {return this.array[pos];}public void setVal(int pos,Object val) {this.array[pos] = val;}
}
public class TestDemo {public static void main(String[] args) {MyArray myArray = new MyArray();myArray.setVal(0,10);myArray.setVal(1,"hello");//字符串也可以存放 String ret = myArray.getPos(1);//编译报错 System.out.println(ret);}
}

      上述的数组可以存放任何类型的数据,但是更多情况下,我们还是希望能够只有一种数据类型,所以,泛型的目的就是指定当前容器要持有什么类型的对象,让编译器做检查.此时就需要把类型作为参数传递.

3.语法

基础语法

class 泛型类名称<类型形参列表> {// 这⾥可以使⽤类型参数 
}
class ClassName<T1, T2, ..., Tn> { 
}

其他写法:

class 泛型类名称<类型形参列表> extends 继承类/* 这⾥可以使⽤类型参数 */ { // 这⾥可以使⽤类型参数 
}
class ClassName<T1, T2, ..., Tn> extends ParentClass<T1> {// 可以只使⽤部分类型参数 
}

我们对上述代码进行改写

class MyArray<T> {public Object[] array = new Object[10];public T getPos(int pos) {return (T)this.array[pos];}public void setVal(int pos,T val) {this.array[pos] = val;}
}
public class TestDemo {public static void main(String[] args) {MyArray<Integer> myArray = new MyArray<>();//1myArray.setVal(0,10);myArray.setVal(1,12);int ret = myArray.getPos(1);//2System.out.println(ret);myArray.setVal(2,"String");//3}
}

代码解释:

类名后的 < T >代表占位符,表示当前类型是一个泛型.
类型的指定一般用一个大写字母来表示,常见的有:
E 表示 Element
K 表示 Key
V 表示 Value
N 表示 Number
T 表示 Type
S, U, V 等等 - 第二、第三、第四个类型
注释1处,类型后加入<Integer> 指定当前类型
注释2处,不需要进行强制类型转换
注释3处,代码编译报错,此时因为在注释2处指定类当前的类型,输入的String类型不是int类型

4.泛型类的使用 

泛型类<类型实参> 变量名; // 定义⼀个泛型类引⽤ 
new 泛型类<类型实参>(构造⽅法实参);// 实例化⼀个泛型类对象
示例
MyArray<Integer> list = new MyArray<Integer>();

注意:泛型只能接受类,所有的基本数据类型必须使用包装类!

5.泛型的上界


在定义泛型类时,有时需要对传入的类型变量做⼀定的约束,可以通过类型边界来约束。

class 泛型类名称<类型形参 extends 类型边界> {...
}
示例
public class MyArray<E extends Number> {...
}MyArray<Integer> l1; // 正常,因为 Integer 是 Number 的⼦类型 
MyArray<String> l2; // 编译错误,因为 String 不是 Number

 

http://www.dtcms.com/wzjs/14349.html

相关文章:

  • wordpress本地搭建网站合肥seo推广公司
  • 上海到北京飞机几个小时移动网站推广如何优化
  • 品牌网站建设 杭州温州网站优化推广方案
  • 教育部国家中职示范校建设网站百度一下免费下载安装
  • 请人做网站要多他达拉非片多少钱一盒
  • 厦门网站建设h5百度识图在线识别
  • 网站怎么做的有创意东莞做网站哪家好
  • 坚持以高质量发展为首要任务一seo推广工具
  • wordpress锁定文件网络优化大师app
  • 上海建设工程施工许可证查询网站6吉林seo刷关键词排名优化
  • 广西玉林建设厅官方网站谷歌是如何运营的
  • 专门做校招的网站网站关键词快速排名优化
  • 设计公司装修seo技术网
  • 访问网站提示输入用户名密码网络营销专业培训学校
  • 电子商务网站建设实训过程推广策划方案范文
  • 企业做网站需要多少钱郑州疫情最新情况
  • 园洲做网站公司软文广告经典案例300字
  • 郑州专业做网站公司网页制作html代码
  • 古董做推广哪个网站好经典的软文广告
  • 网站建设与制作报价舆情信息在哪里找
  • 手机网站 微网站做了5天游戏推广被抓了
  • 小程序异性拼房上海排名优化seo
  • 域名指向国外服务器做网站昆明网络推广方式有哪些
  • wordpress 子菜单网站seo排名
  • 网站备案的时间怎么发布信息到百度
  • 乐山住房和城乡建设厅网站关键词推广操作
  • 营销型网站建设费用怎么这么大广告软文
  • 表白网址链接制作百度seo排名主要看啥
  • 注册网站除了域名重庆网站seo建设哪家好
  • 南昌模板建站定制网站百度seo服务方案