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

河南艾特 网站建设全国企业信用信息系统网官网登录

河南艾特 网站建设,全国企业信用信息系统网官网登录,邯郸网站优化技巧,网站上怎么做福彩卖家乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 包装类装箱和拆箱泛型泛型…

乐观学习,乐观生活,才能不断前进啊!!!

我的主页:optimistic_chen

我的专栏:c语言 ,Java

欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~

文章目录

  • 包装类
  • 装箱和拆箱
  • 泛型
    • 泛型语法
    • 擦除机制
  • 泛型的上届
  • 泛型方法
      • 静态泛型方法
  • 完结

包装类

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

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

装箱和拆箱

装箱操作,新建一个 基本类型对象,将 i 的值放入对象的某个属性中(把基本数据类型变为包装类类型)

拆箱操作:将 Integer 对象中的值取出,放到一个基本数据类型中(把包装类类型变为基本数据类型)

int a=10;
Integer i=Integer.valueOf(a);//显示装箱
int j=i.intValue();//显示拆箱//在使用过程中,装箱和拆箱带来不少的代码量,所以为了减少开发者的负担,java 提供了自动机制(底层帮我们调用了Integer.valueOf()方法)
Integer i2=(Integer)a;//自动装箱
int j=(int)i;//自动拆箱

相关题目:以下代码的输出结果为?

public class Test {public static void main(String[] args) {Integer a = 100;Integer b = 100;Integer c = 200;Integer d = 200;System.out.println(a == b);System.out.println(c == d);}
}

也许有些人认为他们是四个各不相同的对象,两个式子都返回false。

实际运行后发现输出:
在这里插入图片描述

实际装箱的源码:
在这里插入图片描述
结论:i应该在一个范围的时候是去数组直接拿值,不再这个范围的时候,他是返回新的对象。新的对象用等号比较,那必然是不一样的。
在这里插入图片描述

泛型

泛型是在JDK1.5引入的新的语法,通俗讲,泛型:是适用于许多类型。 从代码上讲,就是对类型实现了参数化

一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。 如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。

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 Test {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);}
}

总结:
虽然在这种情况下,当前数组任何数据都可以存放,但是,更多情况下,我们还是希望他只能够持有一种数据类
型。而不是同时持有这么多类型。所以,泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。 此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型

泛型语法

class 泛型类名称  <类型形参列表> {// 这里可以使用类型参数
}
class ClassName<T1, T2, ..., Tn> { }泛型类<类型实参>变量名 = new 泛型类<类型实参>(构造方法实参);//定义一个泛型类引用 ,实例化一个泛型类对象
MyArray<Integer> list = new MyArray<Integer>();//MyArray<Integer> list = new MyArray<>(); // 可以推导出实例化需要的类型实参为 Integer

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

总结:

  1. 泛型是将数据类型参数化,进行传递
  2. 使用 表示当前类是一个泛型类。
  3. 泛型目前为止的优点:数据类型参数化,编译时自动进行类型检查和转换

擦除机制

在编译的过程当中,将所有的T替换为Object这种机制,我们称为:擦除机制

Java的泛型机制是在编译级别实现的。编译器生成的字节码在运行期间并不包含泛型的类型信息
在这里插入图片描述

泛型的上届

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

class 泛型类名称<类型形参 extends 类型边界>{
}
public class MyArray < E extends Number>{
}//只接受 Number 的子类型作为 E 的类型实参

当实现一个泛型类 其中有一个方法 可求数组最大值

class Alg<E extends Compareable<E>>{public E findMax(E[] array){E max=array[0];for(int i=1;i<array.length;i++){if(max.compareTo(array[i])<0){max=array[i];}}return max;}}public class Test{public static void main(String[] args){Interger[] array={1,2,3,4,5};Alg<Integer> alg=new Alg<>();int a=alg.findMax(array);System.out.println(a);}}

E必须是实现了Compareable接口的

泛型方法

方法限定符<类型形参列表> 返回值类型 方法名称(形参列表{
}

class Alg2{public <E extends Compareable<E>> E findMax(E[] array){E max=array[0];for(int i=1;i<array.length;i++){if(max.compareTo(array[i])<0){max=array[i];}}return max;}
}
public class Test{public static void main(String[] args){Alg2 alg2=new Alg2<>();Interger[] array={1,2,3,4,5};int a=alg2.findMax(array);System.out.println(a);}}

静态泛型方法

class Alg3{public static <E extends Compareable<E>> E findMax(E[] array){E max=array[0];for(int i=1;i<array.length;i++){if(max.compareTo(array[i])<0){max=array[i];}}return max;}
}
public class Test{public static void main(String[] args){Interger[] array={1,2,3,4,5};int a=Alg3.findMax(array);//通过类名访问System.out.println(a);}}

完结

好了,到这里Java语法部分就已经结束了~
如果这个系列博客对你有帮助的话,可以点一个免费的赞并收藏起来哟~
可以点点关注,避免找不到我~ ,我的主页:optimistic_chen
我们下期不见不散~~Java

下期预告: Java【数据结构】- - - List

http://www.yayakq.cn/news/61000/

相关文章:

  • 非洲购物网站排名腾讯微信朋友圈广告代理
  • 眼科医院网站设计怎么做定制wordpress
  • 安徽两学一做专题网站h5页面怎么生成链接
  • 弹窗广告最多的网站长沙网页设计公司排名
  • 开关网站建设宁波网站建设制作网络公司
  • 杭州建设网站需要多少钱网站建设模范代码
  • 网站建设怎么报价表平面设计有哪些公司
  • 创建虚拟网站做点击公司做网站的钱网银转账用途
  • 宁波江东区网站建设工作室注册流程及需要的材料
  • 银行官方网站陕西手机网站建设
  • 做网站定金交多少合适汇源企业网络营销策划
  • 成品网站网站建设代码介绍
  • 制作网站教学设计山西网站建设公司哪家好
  • 小说网站怎么建设用手机制作自己的网站
  • 意大利做包招工的网站嘉兴市建设官方网站
  • 医疗网站建设管理电子商务网站建设自服务器
  • 网站建设的中期报告备案密码如何登录添加网站
  • 手机网站 怎么开发设计网页页面
  • 做网站那个公司好php网站开发书籍
  • 进一步加强网站建设中小企业 网站建设
  • 搭建网站seo网站怎么做搜索引擎才能收录
  • 国外做游戏评测的视频网站如何推广网上国网
  • 化妆品网站建设需求问卷调查大学国际化网站建设
  • 营销型网站设计网站安徽省网站备案快吗
  • 万网 网站 流程国企央企招聘2022
  • 网站功能建设特点南昌市做网站公司
  • 网站系统设计目标wordpress添加表
  • 义乌网站建设电话乐享校园网站建设策划书
  • 深圳公司免费网站建设百度推广公司怎么代理到的
  • 网站开发html工具智能免费建站