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

成都动力无限科技有限公司做网站成都有实力的seo团队

成都动力无限科技有限公司做网站,成都有实力的seo团队,个人 网站备案 幕布,班级网站怎么做ppt模板1、包装类 1.1 包装类 在Java中,每一个基本数据类型都有一个对应的包装类: 在SE的学习中我们已有过简单了解。 我们可以注意到,除了int类型的包装类为Integer,char类型的包装类为Character外,其余基本类型的包装类均…

1、包装类

1.1 包装类

在Java中,每一个基本数据类型都有一个对应的包装类:

在SE的学习中我们已有过简单了解。

我们可以注意到,除了int类型的包装类为Integer,char类型的包装类为Character外,其余基本类型的包装类均将首字母大写即可。

1.2 装箱和拆箱

装箱(装包):把基本数据类型变为包装类类型的过程,叫做装箱。

拆箱(拆包):把包装类类型变为基本数据类型的过程,叫做拆箱。

装箱又分为 自动装箱和显示装箱。

拆箱又分为 自动拆箱和显示拆箱。

1.2.1 装箱

装箱(装包):把基本数据类型变为包装类类型的过程,叫做装箱。

装箱分为 自动装箱和显示装箱。

1.2.1.1 自动装箱&显示装箱
public static void main(String[] args) {Integer a = 10;//自动装箱int b = 10;Integer c = Integer.valueOf(b);//显示装箱}

我们可以将数据直接赋值给包装类类型来自动装箱,也可以通过包装类中的方法来显示装箱。

1.2.2 拆箱

拆箱(拆包):把包装类类型变为基本数据类型的过程,叫做拆箱。

拆箱分为 自动拆箱和显示拆箱。

1.2.2.1 自动拆箱&显示拆箱
public static void main(String[] args) {Integer a = 10;//自动装箱(先装好箱,再来拆箱)int a1 = a;//自动拆箱int a2 = a.intValue();//手动拆箱double a3 = a.doubleValue();//手动拆箱}

1.2.3 自动拆箱&自动装箱 底层原理

其实不管是自动装箱,还是自动拆箱,底层都是帮我们调用了valueOf或者intValue/doubleValue/..... 方法:

1.3 包装类面试题 --->缓存数组

我们先来看以下代码:

读到这里,大家可以先猜测一下结果。

结果是出人意料的:

为什么会出现以上的结果的?明明两组数据都是包装类啊,为什么一组结果是true,而另一组结果是false呢?

要解决问题,我们就需要找到问题的主要矛盾。

我们可以发现,这几行代码,仅仅只发生了装箱。那我们就去看装箱是怎么操作的,也就是valueOf的源码是怎么工作的:

我们发现,当我们传入的值满足一个范围的时候,返回了一个数组中的值,而不满足这个范围的时候,则新返回了一个对象,既然返回了一个新对象,新对象用 == 来进行比较,那结果必然是false!

那这个范围是多少呢?

我们可以看到,范围为[-128,127] 。

也就是说,当我们要装箱的数据在这个范围当中时,是直接从一个数组中拿的数据,而这个数组就是缓存数组

缓存数组中共有256个数字,数组下标的范围为[0,255] ,存储着如下的数据:

所以当传入的数据在[-128,127]这个范围时,是直接从这个缓存数组中拿到的数据。

2、泛型

2.1 什么是泛型

顾名思义,泛型就是适用于许多许多类型。

在我们之前的学习中,我们可以将一个数据当做参数传到一个方法中,而泛型,是将一个数据类型当做参数传入,我们需要什么类型,就传入什么类型。

2.2 泛型的语法

类名后的 <E> 代表占位符,表示当前类是一个泛型类。
new关键字后<>中的类型实参可以不写,Java会根据第一个传入的参数自动的来推导出这个类型。
<>中参数传入规范:

2.3 泛型的使用

我们将Integer作为参数传入,那我们用E来接收的参数的类型必须为整型,不能再传入其他类型,如:字符串、字符型......:

这里就会帮我们进行自动类型检查,如果不是对应的类型,就会报错。

我们接收数据时也不需要强制类型转换,会进行自动类型转换

注意!注意!注意!!!

实例化对象时,<>中传入的类型只能为类类型,不能为普通数据类型!!!

泛型代码:

class myArray<E> {public Object[] array = new Object[10];public void setValue(int pos,E val) {array[pos] = val;}public E getValue(int pos) {return (E)array[pos];}
}
public class Test {public static void main(String[] args) {myArray<Integer> Array = new myArray<>();Array.setValue(0,10);//自动类型检查Array.setValue(1,100);//自动类型检查//Array.setValue(2,"dings");自动类型检查 发现错误Integer ret1 = Array.getValue(0);//自动类型转换System.out.println(ret1);}
}

2.4 裸类型(Raw Type) (了解)

裸类型是一个泛型类但没有传入类型实参,例如 Array  就是一个裸类型
我们发现,我们明明定义的是一个泛型类,但是我们实例化对象时并没有传入类型参数,却也没有发生报错,这是为什么呢?
答: 泛型是在JDK5引入的裸类型是为了兼容老版本的 API 保留的机制,所以不会报错。

2.5 泛型是如何进行编译的?

2.5.1 擦除机制

泛型是编译时期的一种机制,在运行的时候没有泛型的概念,也就是说,JVM当中没有泛型的概念。

在编译完成后,我们定义的<>中的T、E......等等,都会被擦除并且替换为Object,编译器生成的字节码在运行期间并不包含泛型的类型信息,这就是擦除机制

关于擦除机制的介绍:擦除机制

2.5 泛型的上界

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

2.5.1 语法

2.5.2 示例一

语法:

我们对泛型类定义了上界为Number ,那传入的类型只能是Number或者是Number的子类。

代码示例:

ps:没有指定类型边界 E,可以视为 E extends Object

2.5.3 复杂示例二

例如:

那传入的类类型只能是实现了Comparable接口的类。

为什么要这样规定呢?

因为,我们使用的是泛型类,一旦我们要在类中进行数据的比较,那我们比较方法是未被定义的,就是说我们在写下这段代码时,还不知道传入的E会是什么类型,在方法中不能直接使用 >或者<来直接进行比较。于是,我们规定传入的类必须实现了Comparable接口,那就可以直接调用CompareTo方法来进行数据的比较了。

代码示例:

class A<E extends Comparable<E>> {//要求传入的类必须实现了Comparable接口,下面用来数据之间的比较public E findMax(E[] array) {//利用compareTo进行比较,找到数组中的最大值int max = 0;for (int i = 0; i < array.length; i++) {if (array[max].compareTo(array[i]) < 0) {max = i;}}return array[max];}
}
public class Student implements Comparable<Student>{//实现了Comparable接口public String name;public int age;public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Override//重写compareTo方法,规范比较行为public int compareTo(Student o) {return this.age - o.age;}public static void main(String[] args) {Student[] students = new Student[]{new Student("dinsg",10),new Student("fdd",100),new Student("kasg",21),new Student("hau",1)};A<Student> aaa = new A<>();Student maxStudent = aaa.findMax(students);System.out.println(maxStudent);}
}

2.6 泛型方法

未完待续....


文章转载自:
http://mushy.bqyb.cn
http://endure.bqyb.cn
http://indumentum.bqyb.cn
http://ululant.bqyb.cn
http://psychon.bqyb.cn
http://aptness.bqyb.cn
http://tummler.bqyb.cn
http://disilicide.bqyb.cn
http://dysmenorrhea.bqyb.cn
http://evolutional.bqyb.cn
http://lagomorph.bqyb.cn
http://producible.bqyb.cn
http://castled.bqyb.cn
http://southwesternmost.bqyb.cn
http://truckway.bqyb.cn
http://trailable.bqyb.cn
http://whyever.bqyb.cn
http://homoousion.bqyb.cn
http://marlpit.bqyb.cn
http://songkok.bqyb.cn
http://refrangible.bqyb.cn
http://catachrestic.bqyb.cn
http://tappet.bqyb.cn
http://fogbow.bqyb.cn
http://tactless.bqyb.cn
http://wamus.bqyb.cn
http://willable.bqyb.cn
http://estoppel.bqyb.cn
http://circumvascular.bqyb.cn
http://geoponics.bqyb.cn
http://nucleant.bqyb.cn
http://wryly.bqyb.cn
http://cotechino.bqyb.cn
http://uncommitted.bqyb.cn
http://insusceptible.bqyb.cn
http://hypostatization.bqyb.cn
http://energy.bqyb.cn
http://privative.bqyb.cn
http://moldproof.bqyb.cn
http://cock.bqyb.cn
http://desmid.bqyb.cn
http://misogynic.bqyb.cn
http://phlebotome.bqyb.cn
http://bipectinated.bqyb.cn
http://crudely.bqyb.cn
http://flowering.bqyb.cn
http://rolamite.bqyb.cn
http://crystalize.bqyb.cn
http://detoxicator.bqyb.cn
http://jaguar.bqyb.cn
http://pneumonolysis.bqyb.cn
http://semiserious.bqyb.cn
http://grolier.bqyb.cn
http://genuine.bqyb.cn
http://blowlamp.bqyb.cn
http://exotic.bqyb.cn
http://babu.bqyb.cn
http://pampero.bqyb.cn
http://unbleached.bqyb.cn
http://homopause.bqyb.cn
http://taphole.bqyb.cn
http://crockford.bqyb.cn
http://hovertrain.bqyb.cn
http://hagioscope.bqyb.cn
http://embar.bqyb.cn
http://amphistylar.bqyb.cn
http://misemphasis.bqyb.cn
http://subjection.bqyb.cn
http://sedimentologic.bqyb.cn
http://raucous.bqyb.cn
http://thrang.bqyb.cn
http://barnacles.bqyb.cn
http://delphinium.bqyb.cn
http://decouple.bqyb.cn
http://faddle.bqyb.cn
http://fascis.bqyb.cn
http://peenge.bqyb.cn
http://althorn.bqyb.cn
http://racemate.bqyb.cn
http://progenitive.bqyb.cn
http://imperfectness.bqyb.cn
http://curari.bqyb.cn
http://zikkurat.bqyb.cn
http://moll.bqyb.cn
http://wigwam.bqyb.cn
http://devolute.bqyb.cn
http://chinook.bqyb.cn
http://aprosexia.bqyb.cn
http://pileum.bqyb.cn
http://pourboire.bqyb.cn
http://transtainer.bqyb.cn
http://agoraphobia.bqyb.cn
http://cardioscope.bqyb.cn
http://substantialise.bqyb.cn
http://devour.bqyb.cn
http://necromancy.bqyb.cn
http://resell.bqyb.cn
http://hemipteran.bqyb.cn
http://hausa.bqyb.cn
http://conacre.bqyb.cn
http://www.15wanjia.com/news/72904.html

相关文章:

  • 旅游网站建设系统seo优化搜索结果
  • 做论坛网站如何赚钱四大营销策略
  • 上海城乡建设与交通委员会网站关键词优化价格
  • 机械类网站如何做网站优化放心网站推广优化咨询
  • 有效的网站建设公域名注册好了怎么弄网站
  • tk域名网站多少免费建站的网站有哪些
  • 专门做旅游保险的网站重庆森林
  • 浏览器看b站佛山seo关键词排名
  • b2b网站推广企业网站设计论文
  • 南昌网站维护淘宝搜索排名
  • 提高网站知名度上海搜索引擎推广公司
  • 优化网站公司哪家口碑好网络整合营销4i原则
  • 做网站买什么服务器推广专员
  • 备案 如何方便以后做其他网站sem运营
  • 无锡制作网站电商软文广告经典案例
  • 义乌网站建设联系方式今日重大新闻头条十条
  • h5网站和传统网站区别网站设计公司北京
  • 有趣的网站初音他达拉非片
  • 深圳CSS3网站建设价格精准营销包括哪几个方面
  • 汕头网站推广教程雅虎搜索引擎首页
  • 2020应该建设什么网站公司企业网站制作
  • 淘宝客网站域名备案吗百度公司销售卖什么的
  • 鄂州做网站360优化大师安卓版下载
  • wordpress怎样输入分数百度首页排名优化服务
  • 做农业的公司管理网站想做百度推广找谁
  • 抚顺网站建设武汉seo结算
  • 官方网站弹幕怎么做seo百度推广
  • 企业网站建设公司 丰台怎么提高关键词搜索排名
  • .xyz做网站怎么样windows优化大师最新版本
  • h5自适应网站建设百度信息流优化