精华内容
下载资源
问答
  • 变量:static关键字修饰的变量,为什么变量,意思就是他属于这个的,可以用类名.变量名这样用,而不是这个的对象的变量,当让这个的对象也可以调用的,变量用类名.变量名直接用的,而无须实例化...

    类变量:static关键字修饰的变量,为什么叫类变量,意思就是他是属于这个类的,可以用类名.变量名这样用,而不是这个类的对象的变量,当让这个类的对象也是可以调用的,类变量是用类名.变量名直接用的,而无须实例化这个类的对象来调用

    成员变量和局部变量java中 变量分成员变量 和局部变量 成员变量是指这个类的变量,局部变量是类中方法体内定义的变量

    记住一个原则即可:方法体中的引用变量和基本类型的变量都在栈上,其他都在堆上

    所以B对象里面所有东西都在堆上,main方法中的b变量在栈上。

    对于局部变量,如果是基本类型,会把值直接存储在栈;如果是引用类型,比如String s = new String("william");会把其对象存储在堆,而把这个对象的引用(指针)存储在栈

    成员变量作为对象的属性,当然是放在堆里了。对象在堆里,对象中的内容就是各种字段。
    只有方法执行的时候所用到的各种指令参数才会入栈出栈。
    类的成员变量在不同对象中各不相同,都有自己的存储空间(成员变量在堆中的对象中),基本类型和引用类型的成员变量都在这个对象的空间中,作为一个整体存储在堆。而类的方法却是该类的所有对象共享的,只有一套,对象使用方法的时候方法才被压入栈,方法不使用则不占用内存。(对象实质上就是各种成员变量,不包括方法)

    局部变量存在于jvm的什么区域内:

    基本类型是存在栈中
    非通过new创建的字符串对象是存在jvm的字符池中
    其余的都存放在堆中

    展开全文
  • 注:阅读了effective java 讲诉enum的部分,做下笔记,下文中...b,枚举类型提供编译时的类型安全。如:函数中声明一个参数类型为枚举类型的Apple时,那么调用方法时传递到参数上的任何非null对象一定Apple的值之...

    注:阅读了effective java 讲诉enum的部分,做下笔记,下文中大部分代码来自effective java书中

    枚举类型是指由一组固定的常量组成的合法值得类型。

    使用枚举的好处:a,因为没有可以访问的构造器,枚举类型是真正的final;

    b,枚举类型提供类编译时的类型安全。如:函数中声明一个参数类型为枚举类型的Apple时,那么调用方法时传递到参数上的任何非null对象一定是Apple的值之一,         而是用静态常量就无法保证;

    c,包含同名常量的多个枚举类型可以和平共处,每个类型都有自己的命名空间

    d,枚举类型允许添加任意的方法和域,并可实现接口。

    1,常见的一组简单的枚举

    如:

    public enumApple {

    FUJI,PIPPIN,CRANNY_SMITH

    }

    2,带有具体值的枚举(可自定义方法)

    public enumApple {

    FUJI(1), PIPPIN(2), CRANNY_SMITH(3);private final intcode;

    Apple(intcode) {this.code =code;

    }public intgetCode() {returncode;

    }public static Apple fromCode(intcode) {for(Apple apple : Apple.values()) {if (apple.getCode() ==code)returnapple;

    }return null;

    }

    }

    3,多个参数,并带有运算方法

    public enumPlanet {

    MERCURY(3.303e+23, 2.4397e6),

    VENUS(4.869e+24, 6.0518e6),

    EARTH(5.976e+24, 6.37814e6),

    MARS(6.421e+23, 3.3972e6),

    JUPITER(1.9e+27, 7.1492e7),

    SATURN(5.688e+26, 6.0268e7),

    URANUS(8.686e+25, 2.5559e7),

    NEPTUNE(1.024e+26, 2.4746e7),

    PLUTO(1.27e+22, 1.137e6);private final doublemass;private final doubleradius;private final double surfaceGravity;//m/ s^2

    public static final double G = 6.67300E-11;

    Planet(double mass, doubleradius) {this.mass =mass;this.radius =radius;

    surfaceGravity= G * mass / (radius *radius);

    }public doublemass() {returnmass;

    }public doubleradius() {returnradius;

    }public double surfaceWeight(doubleotherMass) {return otherMass *surfaceGravity;

    }

    }

    4,根据不同的常量有不同的方法

    switch方法 ----不推荐(有可能新添加了常量却没有在switch中加入就悲剧了)

    public enumOperation {

    PLUS("+"),

    MINUS("-"),

    TIMES("*"),

    DIVIDE("/");private finalString symbol;

    Operation(String symbol){this.symbol=symbol;

    }publicString getSymbol() {returnsymbol;

    }double apply(double x,doubley){switch(this){case PLUS:return x +y;case MINUS:return x -y;case TIMES:return x *y;case DIVIDE:return x /y;

    }throw new AssertionError("unknown operation: "+this);

    }

    推荐:constant-specific method implementation

    public enumOperation {

    PLUS("+") {public double apply(double x, doubley) {return x +y;

    }

    },

    MINUS("-") {public double apply(double x, doubley) {return x -y;

    }

    },

    TIMES("*") {public double apply(double x, doubley) {return x *y;

    }

    },

    DIVIDE("/") {public double apply(double x, doubley) {return x /y;

    }

    };private finalString symbol;

    Operation(String symbol) {this.symbol =symbol;

    }publicString getSymbol() {returnsymbol;

    }public abstract double apply(double x, doubley);

    }

    5,策略枚举 strategy enum

    先来看一种情况:通过一周的工作时间来计算工资,工作时间8小时,额外算加班,周末工作也算加班

    首先我们可以使用switch来做,这样看起来十分简单

    public enumPayrollDay {

    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FIRDAY, SATURDAY, SUNDAY;private static final int HOURS_PER_SHIFT = 8;double pay(double hoursWorked, doublepayRate) {double basePay = hoursWorked *payRate;doubleovertimePay;switch (this) {caseSATURDAY:caseSUNDAY:

    overtimePay= hoursWorked * payRate * 2;default:

    overtimePay= hoursWorked <= HOURS_PER_SHIFT ? 0: (hoursWorked- HOURS_PER_SHIFT) * payRate * 2;break;

    }return basePay +overtimePay;

    }

    }

    但是同样有可能出现上面提到不严谨的问题,当枚举常量增加时,switch可能忘记加入

    使用策略枚举时 如下:

    public enumPayrollDay {

    MONDAY(PayType.WEEKDAY), TUESDAY(PayType.WEEKDAY), WEDNESDAY(

    PayType.WEEKDAY), THURSDAY(PayType.WEEKDAY), FIRDAY(PayType.WEEKDAY), SATURDAY(

    PayType.WEEKEND), SUNDAY(PayType.WEEKEND);private finalPayType payType;

    PayrollDay(PayType payType) {this.payType =payType;

    }publicPayType getPayType() {returnpayType;

    }double pay(double hoursWorked, doublepayRate) {returnpayType.pay(hoursWorked, payRate);

    }enumPayType {

    WEEKDAY {

    @Overridedouble overtimePay(double hours, doublepayRate) {return hours < HOURS_PER_SHIFT ? 0 : (hours -HOURS_PER_SHIFT)* payRate * 2;

    }

    },

    WEEKEND {

    @Overridedouble overtimePay(double hours, doublepayRate) {return hours * payRate * 2;

    }

    };private static final int HOURS_PER_SHIFT = 8;abstract double overtimePay(double hours, doublepayRate);double pay(double hoursWorked, doublepayRate) {double basePay = hoursWorked *payRate;return basePay +overtimePay(hoursWorked, payRate);

    }

    }

    }

    6,上面几个例子中都不推荐时间switch,那么什么时候使用呢

    枚举中的switch语句适用于给外部的枚举类型增加特定于常量的行为。如:上面例子中的operation 如果希望他有一个方法返回对应的逆运算

    public staticOperation inverse(Operation op) {switch(op) {casePLUS:returnOperation.MINUS;caseMINUS:returnOperation.PLUS;caseTIMES:returnOperation.DIVIDE;caseDIVIDE:returnOperation.TIMES;default:throw new AssertionError("unknown operation : " +op);

    }

    }

    展开全文
  • 展开全部事务处理在针对数据库操作时一个重要环节,它e5a48de588b63231313335323631343130323136353331333335336537可以保证执行多条记录的一致性,实现数据库中表与表之间的关联,同时提高了对数据操作的准确性、...

    展开全部

    事务处理是在针对数据库操作时一个重要环节,它e5a48de588b63231313335323631343130323136353331333335336537可以保证执行多条记录的一致性,实现数据库中表与表之间的关联,同时提高了对数据操作的准确性、安全性。本文主要一起来学习在Java程序中如何使用JDBC来实现数据间的事务处理。

    一、什么是事务处理

    事务处理就是当执行多个SQL指令时,如果因为某个原因使其中一条指令执行有错误,则取消先前执行过的所有指令。它的作用是保证各项操作的一致性和完整性。

    二、JDBC中的事务控制

    JDBC API中的JDBC事务是通过Connection对象进行控制的。Connection对象提供了两种事务模式:自动提交模式和手工提交模式。系统默认为自动提交模式,即,对数据库进行操作的每一条记录,都被看作是一项事务。操作成功后,系统会自动提交,否则自动取消事务。 如果想对多个SQL进行统一的事务处理,就必须先取消自动提交模式,通过使用Connection 的setAutoCommit(false) 方法来取消自动提交事务。Connection类中还提供了如下其他控制事务的方法:

    1)public boolean getAutoCommit():判断当前事务模式是否为自动提交,如果是则返回ture,否则返回false;

    2)public void commit():提交事务;

    3)public void rollback():回滚事务;

    注意:

    Java中使用JDBC事务处理,一个JDBC不能跨越多个数据库而且需要判断当前使用的数据库是否支持事务。这时可以使用 DatabaseMedaData 的supportTranslations() 方法进行检查数据库是否支持事务处理,若返回 true 则说明支持事务处理,否则返回 false 。如使用MySQL 的事务功能,就要求MySQL里的表的类型为Innodb才支持事务控制处理,否则,在Java程序中做了 commit 或 rollback ,但数据库中是不生效的。

    三、JDBC 事务处理基本流程

    实现事务处理的基本流程如下:

    1)判断当前使用的JDBC驱动程序和数据库是否支持事务处理;

    2)在支持事务处理的前提下,取消系统自动提交模式;

    3)添加需要进行的事务信息;

    4)将事务处理提交到数据库;

    5)在处理事务时,若某条信息发生错误,则执行事务回滚操作,并回滚到事务提交前的状态。

    四、事务处理的实例

    利用JDBC实现事务处理的实例,将4条SQL语句加在同一个事务里,当其中一条语句发生错误时,则执行事务回滚,取消所有的操作。所以在最后的运行结果中,并没有发现有数据更新。

    1、具体的代码如下:

    [java] view plaincopy

    package chp07;

    import java.sql.Connection;

    import java.sql.DatabaseMetaData;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    public class Java_Transa {

    // 数据库连接

    public static Connection getConnection() {

    Connection con = null;

    try {

    Class.forName("com.mysql.jdbc.Driver"); // 加载Mysql数据驱动

    con = DriverManager.getConnection(

    "jdbc:mysql://localhost:3306/myuser", "root", "root"); // 创建数据连接

    } catch (Exception e) {

    System.out.println("数据库连接失败");

    }

    return con;

    }

    // 判断数据库是否支持事务

    public static boolean JudgeTransaction(Connection con) {

    try {

    // 获取数据库的元数据

    DatabaseMetaData md = con.getMetaData();

    // 获取事务处理支持情况

    return md.supportsTransactions();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return false;

    }

    // 将一组SQL语句放在一个事务里执行,要么全部执行通过,要么全部不执行

    public static void StartTransaction(Connection con, String[] sqls) throws Exception {

    if (sqls == null) {

    return;

    }

    Statement sm = null;

    try {

    // 事务开始

    System.out.println("事务处理开始!");

    con.setAutoCommit(false); // 设置连接不自动提交,即用该连接进行的操作都不更新到数据库

    sm = con.createStatement(); // 创建Statement对象

    //依次执行传入的SQL语句

    for (int i = 0; i < sqls.length; i++) {

    sm.execute(sqls[i]);// 执行添加事物的语句

    }

    System.out.println("提交事务处理!");

    con.commit(); // 提交给数据库处理

    System.out.println("事务处理结束!");

    // 事务结束

    //捕获执行SQL语句组中的异常

    } catch (SQLException e) {

    try {

    System.out.println("事务执行失败,进行回滚!\n");

    con.rollback(); // 若前面某条语句出现异常时,进行回滚,取消前面执行的所有操作

    } catch (SQLException e1) {

    e1.printStackTrace();

    }

    } finally {

    sm.close();

    }

    }

    // 查询表 staff

    public static void query_student() throws Exception {

    Connection conect = getConnection(); // 获取连接

    System.out.println("执行事物处理后,表 staff 的全部记录为:\n");

    try {

    String sql = "select * from staff"; // 查询数据的sql语句

    Statement st = (Statement) conect.createStatement(); // 创建Statement对象

    ResultSet rs = st.executeQuery(sql); // 执行SQL语句并返回查询数据的结果集

    //打印输出查询结果

    while (rs.next()) { // 判断是否还有下一个数据

    // 根据字段名获取相应的值

    String name = charset(rs.getString("name"));

    int age = rs.getInt("age");

    String sex = charset(rs.getString("sex"));

    String depart = charset(rs.getString("depart"));

    String address = charset(rs.getString("address"));

    int worklen = rs.getInt("worklen");

    int wage = rs.getInt("wage");

    System.out.println(name + " " + age + " " + sex + " "

    + address + " " + depart + " " + worklen + " " + wage);

    }

    System.out.println();

    } catch (SQLException e) {

    System.out.println("查询数据失败");

    }

    }

    // 字符集的设定,解决中文乱码

    public static String charset(String str) throws Exception {

    String newStr = new String(str.getBytes("ISO8859-1"), "UTF-8");

    return newStr;

    }

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

    String[] arry = new String[4]; // 定义一组事物处理语句

    arry[0] = "delete from staff where name='Serein'"; //删除staff表格中 name 字段值为 "Serein" 的员工记录

    arry[1] = "UPDATE staff SET address='Shenzhen' where name=lili";// 执行这条语句会引起错误,因为表 staff 中name='lili'不存在

    arry[2] = "INSERT INTO student (name,age,sex,address,depart,worklen,wage)" //SQL插入记录语句

    + "values ('Allen',19,'M','Beijing','Engine',4,4800)";

    arry[3] = "select * from staff"; //SQL查询表 staff 语句

    Connection con = null;

    try {

    con = getConnection(); // 获得数据库连接

    boolean judge = JudgeTransaction(con); // 判断是否支持批处理

    System.out.print("支持事务处理吗? ");

    System.out.println(judge ? "支持" : "不支持");

    if (judge) {

    StartTransaction(con, arry); // 如果支持则开始执行事务

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    con.close(); // 关闭数据库连接

    }

    query_student();

    }

    }

    说明:该Java程序中数据库操作涉及的数据库为 “myuser ” ,并使用其中的 “staff” 表格,也就是我之前的文章《JDBC连接MySQL数据库及示例》里所创建的数据库和表。如果需要跟着去实现并运行这个例子的话,可以前去参考创建,或者根据你自己的数据库情况去修改其中有关连接MySQL的代码以及SQL语句。

    附上程序运行前的“staff”表格中的数据:

    注意观察里面的第三条记录,即 name 字段值为“Seren”的记录。即将运行的 Java 程序的第113代码中的 SQL 语句表示要删除该条记录,但是由于后面的事务出错,所以全部的事务不执行,并回滚,所以最后的结果是name为“Serein”这条记录依旧存在于数据表中。

    本回答由提问者推荐

    2Q==

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • · 什么是强制类型语言呢? · 要求变量严格符合规定、所有变量都必须先定义后使用(安全性高、速度慢) 一、数据类型分成 :基本类型(primitive type)、引用类型(reference type) 1. 基本类型 a.数值类型 : ...

    数据类型

    java是强制类型的语言
    · 什么是强制类型语言呢?
    · 要求变量严格符合规定、所有变量都必须先定义后使用(安全性高、速度慢)

    一、数据类型分成 :基本类型(primitive type)、引用类型(reference type)

    1. 基本类型
    		a.数值类型 :
    			整数:byte 、short、int、long
    			浮点: float、double
    			字符类型:char
    		b.boolean类型: true、false 
    
    	byte by =100;
    	short sh = 1000;
    	int i =10000;
    	long lo = 1000000;
    	float fl = 1.1f;
    	double dou=1.11111;
    	char ch ='我爱祖国';
    	boolean b = true;
    	boolean B = false;
    
    2. 引用类型
    	a.类:一种面向对象计算机编程语言的构造,描述了所创建的对象共同的属性和方法。
    	b.接口:
    	c.数组:数字的集合
    

    二、进制转换

    		int i1=10;  //十进制
            int i2 =010; //开始加0 表示8进制
            int i3 =0x10; //十六进制 开头加 0x
            System.out.println(i1);
            System.out.println(i2);
            System.out.println(i3);
    

    输出结果:
    在这里插入图片描述

    三、类型转换

    1.所有字符本质是数字
    将常用的字母、数字、以及符号进行编码 以便在计算机中存储和通信网络中传递 而这个编码表成为 ASCII码表

    char c1 = 'a';
    System.out.println((int)c1);
    

    运行↓↓↓↓↓↓↓↓
    结果

    2.转义字符
    在日常使用计算机的时候存在一些正经的特殊需求,比如:换行、退格、换页等·
    因此在语句中规定了一些特殊表示来完成这些需求

    在这里插入图片描述

    四、数据类型转换

    java运算过程中有可能会出现混合运算 那么便需需要数据类型转换

    • 1.自动转换 : 是在编译器运行到不同类型的数据时将会 转换成同一类型的数据,再进行运算。
      转换规则:
      低------------------------------------------------------------------>高
      byte、short、char —> int —> long —>float —>double

    • 2.强制转换 : 在使用中需要将一种数据类型转换成另外一种我们所需要的数据类型。

    注意:
    1.不能对布尔类型进行数据转换
    2.不能把类型转换称成不相干的类型
    3.高精度转换为低进度——强制转换
    4.自动转换不会有问题,强制转换可能会设计内存溢出,或者精度改变导致数字本身大小发生改变。

        public static void main(String[] args) {
            int a = 128;
            byte b =(byte)a; //强制转换
            System.out.println(b); //数据溢出
    
            System.out.println("===================");
            int money = 1_0000_0000;
            int year =100;
            long total = money * ((long)year);
            System.out.println(total);
        }
    















    自学内容,来源“kuangstudy.com”

    展开全文
  • Java语言的类型是( ) A.面向对象语言B.面向过程语言C.汇编程序D.形式语言2. 下列选项中,____反映了Java程序并行机制的特点。( ) A.安全B. 多线程 C. 跨平台 D. 可移植3.下列_______面向大型企业级专用...
  • 什么是模板

    2009-03-10 15:43:00
    模板根据参数类型生成函数和的机制(有时... 例如,创建一个类型安全函数来返回两个参数中较小的一个,如果不使用Templates,必须要编写一系列如下的函数:// min for intsint min( int a, int b ) return ( a
  • 04数据类型

    2021-03-21 21:19:29
    类型语言:安全性高,速度较慢 ​ 要求变量的使用要严格符合规定,所有变量都必须先定义之后才能使用 弱类型语言: ​ vb ​ JS ​ python Java的数据类型分为两大: 基本类型: 引用类型什么...
  • 枚举类型

    2018-04-08 09:52:20
    1.为什么JDK加入枚举数据类型?a.出于类型安全考虑。没有枚举之前常用静态常量来表示,如 public static final MAN = 0; public static final WOMAN = 1; 这样的性别定义实际上一个整型数据,完全可用来做加...
  • String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的 a、可变性:String中使用字符数组保存字符串,private final char value[],所以string对象是不可变的。StringBuilder与StringBuffer都...
  • C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统:TYPE b = (TYPE)a。如 int a=1; char b=(char)a; 这种转换适用于面向过程的没有的概念的c语言的转换,然而这样的转换符也能随意地应用于...
  • Java基础02 -- 数据类型

    2020-02-22 21:18:25
    因为类型语言,所以Java安全性高...如上图所示,为什么a和b0.1,会不相等;c和d两个数据明显不同,为啥会相等? 因为浮点数可以表示的字长有限的,但它也离散的。浮点数一般都会出现一种叫舍入误差的东...
  • 因为 c++ 中类型转换的方式,他们都通过模板的方式实现,安全性得到保证,通过不同的用途使用不同的显示类型转换模板 C语言的强制类型转换 C风格的强制转换(Type Cast)容易理解,不管什么类型的转换都可以使用...
  • 18.1 什么是面向对象编程 152 18.2 对象 153 18.3 对象生成器 154 18.4 子类型化 155 18.5 聚集实例变量 155 18.6 简单 155 18.7 添加实例变量 157 18.9 含self 158 18.8 调用超类方法 158 18.10 使用...
  • 1.为什么要有双亲委派?...所以,为了系统安全,类似“ java.lang.Object”这种核心,jvm需要保证他们生成的对象都会被认定为同一种类型。即“通过代理模式,对于 Java 核心库的的加载工作由启动加载器(b
  • UNIX系统安全工具

    2011-10-21 18:52:15
    2.3.1 为什么要有安全策略 18 2.3.2 好的安全策略具有的特征 18 2.4 一个UNIX安全模型 18 2.5 用户培训 20 2.5.1 公布策略 20 2.5.2 了解社会工程 20 2.6 道德观念 21 第3章 帐号安全基础 24 3.1 为什么要求帐号安全...
  • 除了<code>object都基础类型(primitives)。 <p><code>typeof操作符检查给定操作数的类型类型是<code>undefined</code>,<code>boolean</code>,<code>number</code>,<code>...
  • 如何认识网络信息安全,它有哪些主要威胁,它们的含义分别是什么 一次一密有什么特征 一个密码系统由哪些元素所组成。何谓对称密码和公钥密码 什么是分组密码,分组密码和流密码有什么区别 什么是哈希函数,一个哈希...
  • 第3章~第9章全面讲解针对不同类型软件的安全漏洞应该采取的漏洞发掘方法。同时结合实际操作和案例解析的方式带领读者学习;第10章针对普通的软件用户和专业的软件开发者,分别给出了如何防范针对软件漏洞的恶意攻击...
  •  第二类是从没有源代码的程序出发,生成对应的源程序、系统结构以及相关设计原理和算法思想的文档等,亦即本书重点讨论的二进制逆向工程。  本书共有13章和三个附录,涵盖了逆向工程的基础知识、应用、开发和拓展...
  • 14.3 是什么使成为集合:IEnumerable 392 14.3.1 foreach和数组 392 14.3.2 foreach和IEnumerable 393 14.3.3 foreach循环内不要修改集合 396 14.4 标准查询操作符 397 14.4.1 使用Where()来...
  • 数据库课程设计(基于B/S)

    热门讨论 2008-12-28 15:28:06
    (6)系统维护功能:数据的安全管理,主要依靠管理员对数据库里的信息进行备份和恢复,数据库备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和数据的安全性,有利于系统的维护。...
  • 浅析java泛型编程

    2019-05-24 18:54:30
    什么是泛型? 泛型主要 Java SE 1.5 的新特性,泛型的本质就是参数化类型什么是参数化类型呢?就是所操作的数据类型被指定为一...可以对类型进行自动检查 注:不是替换 仅仅用来进行类型安全检查!! b.自动...
  • C++中的上溯造型体现

    2019-05-16 19:51:28
    在所有面向对象语言中, 都隐含了上溯造型这一概念, 那么什么是上溯造型, 如声明一个基类A, 再声明一个类B继承于A, 声明一个函数, 使其参数为A类型, 那么即使我们在函数调用时传入B类型的对象, 也可以被编译器通过...
  • 大家都知道在基本数据类型转换的时候,高类型数据转低类型数据其实就是隐式转换,也是安全的,为什么呢?因为没有丢失精度,比如float a =1.234,转换成int b =a;,对于整型的int b 来说完全ok,因为没有任何损失,....
  • Java 泛型总结

    千次阅读 2016-10-20 17:50:37
    什么是泛型 泛型实现了参数化类型的概念,主要目的希望或方法能够就最广泛的表达能力 泛型的优点和局限性 优点: 1、在编译时提供安全检查  2、消除强制类型转换...1、数组协变的:如果A是类B的子类型,那么A
  • C#OOP理论总结

    2020-06-08 19:17:05
    目录 深入.NET框架深入C#数据类型使用集合组织相关数据继承多态 深入.NET框架 ...值类型复制自身的数据一份,然后给别人用,所以无论别人用这个传过去值上面做什么操作,都对自己本身没有任何影响,
  • 1,C++中为什么用模板的原因?(即模板的优点) (1)可用来创建动态增长和减小的数据结构 ...(5)可用于基本数据类型2,以下程序的输出结果是什么?int main() { int a = 1, b = 2, c = 3, d =
  • XSL全称Extensible Stylesheet Language(可扩展样式语言), 将来设计XML文档显示样式的主要文件类型。它本身也基于XML语言的。使用XSL,你可以灵活的设置文档显示样式,文档将自动适应任何浏览器和PDA(掌上电脑...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 439
精华内容 175
关键字:

安全类型b类是什么