一些特殊的函数

1、public native Class<?> getComponentType();

该函数在Class<T>类中,如果该Class类对象属于数组类型,那么就返回对应的Class对象,如果不是数组类型那么就返回null,示例代码:

BitSet []bitset = new BitSet[1];//非基本数据类型的数组类型
		
System.out.println(bitset.getClass().getComponentType());
		
long []l = {1};//基本数据类型(byte short int long float double char boolean)的数组类型
System.out.println(l.getClass().getComponentType());
		
Integer a = new Integer(10);//非数组类型
System.out.println(a.getClass().getComponentType());

运行结果如下:

class java.util.BitSet
long
null

2、public native boolean isPrimitive();

该函数在Class<T>类中,判断该类是否属于基本数据类型,示例代码如下:

Class stringClass=String.class;
System.out.println("String is primitive type:"+stringClass.isPrimitive());

Class booleanClass=Boolean.class;
System.out.println("Boolean is primitive type:"+booleanClass.isPrimitive());

Class booleanType=boolean.class;
System.out.println("boolean is primitive type:"+booleanType.isPrimitive());

Class byteType=byte.class;
System.out.println("byte is primitive type:"+byteType.isPrimitive());

Class charType=char.class;
System.out.println("char is primitive type:"+charType.isPrimitive());

Class shortType=short.class;
System.out.println("short is primitive type:"+shortType.isPrimitive());

Class intType=int.class;
System.out.println("int is primitive type:"+intType.isPrimitive());

Class longType=long.class;
System.out.println("long is primitive type:"+longType.isPrimitive());

Class floatType=float.class;
System.out.println("float is primitive type:"+floatType.isPrimitive());

Class doubleType=double.class;
System.out.println("double is primitive type:"+doubleType.isPrimitive());

运行结果如下:

String is primitive type:false
Boolean is primitive type:false
boolean is primitive type:true
byte is primitive type:true
char is primitive type:true
short is primitive type:true
int is primitive type:true
long is primitive type:true
float is primitive type:true
double is primitive type:true

3、String.intern()函数,该函数属于String类,示例代码如下

String a = "a";
String b = "b";
String c = "ab";
String d = new String("ab");
String e = a + b;
        
System.out.println(c.intern() == d);
System.out.println(c.intern() == e);
System.out.println(c.intern() == d.intern());
System.out.println(c.intern() == e.intern());
System.out.println(d.intern() == e);
System.out.println(d.intern() == e.intern());

运行结果:

false
false
true
true
false
true

主要的原理如下:

String类对象调用intern函数会先到字符串池中去找相同值(通过equals函数来判断)的对象,如果找到了那么就返回该对象,如果没有找到那么就在字符串池中创建该对象并返回该对象,我们来分析上面的代码:

第一行,c.intern() == d

c.intern函数返回的是字符串池中的对象,而d是通过new String创建的,所以该对象不会进入到字符串池中,因此两个对象不一样

第二行,c.intern() == e

由于e是通过a+b产生的,而a和b都是变量,所以这种情况下产生的e对象不会进入到字符串池中

后面几行都类似,参考资料

内容简介 · · · · · · 《特殊函数概论》较系统地讲述了一些主要的特殊函数,如超几何函数、勒让德函数、合流超几何函数、贝塞耳函数、椭圆函数、椭球谐函数、马丢(Mathieu)函数等。同时也阐明一些在讨论特殊函数时常用的概念和理论,如关于函数的级数展开和无穷乘积展开,渐进展开,线性常微分方程的级数解法和积分解法等,在各章之末还附有习题,习题中包含了一些有用的公式作为《特殊函数概论》正文的补充。 目录 · · · · · · 第一章 函数用无穷级数和无穷乘积展开 1.1 伯努利(Bernoulli)多项式与伯努利数 1.2 欧勒(Euler)多项式与欧勒数 1.3 欧勒一麦克洛临(Euler-Maclaurin)公式 1.4 拉格朗日(Lagrange)展开公式 1.5 半纯函数的有理分式展开,米塔格一累夫勒(Mittag-Leffler)定理 1.6 无穷乘积? 1.7 函数的无穷乘积展开.外氏(Weierstrass)定理 1.8 渐近展开 1.9 拉普拉斯(Laplace)积分的渐近展开.瓦特孙(Watson)引理 1.10 用正交函数组展开 习题 第二章 二阶线性常微分方程 2.1 二阶线性常微分方程的奇点 2.2 方程常点邻域内的解 2.3 方程奇点邻域内的解 2.4 正则解.正则奇点 2.5 夫罗比尼斯(Frobenius)方法 2.6 无穷远点 2.7 傅克斯(Fuchs)型方程 2.8 具有五个正则奇点的傅克斯型方程 2.9 具有三个正则奇点的傅克斯型方程 2.10 非正则奇点.正则形式解 2.11 非正则奇点,常规解和次常规解 2.12 积分解法,基本原理 2.13 拉普拉斯型方程和拉氏变换 2.14 欧勒变换 习题 第三章 伽马函数 3.1 伽马函数的定义 3.2 递推关系 3.3 欧勒无穷乘积公式 3.4 外氏(Weierstrass)无穷乘积 3.5 伽马函数与三角函数的联系 3.6 乘积公式 3.7 围道积分 3.8 欧勒第一类积分.B函数 3.9 双周围道积分 3.10 狄里希累(Dirichlet)积分 3.11 r函数的对数微商 3.12 渐近展开式 3.13 渐近展开式的另一导出法 3.14 里曼(Riemann)函数 3.15 函数函数方程 3.16 s为整数时之值 3.17 厄密(Hermite)公式 3.18 与伽马函数的联系 3.19 函数的欧勒乘积 3.20 函数的里曼积分 3.21 伽马函数的渐近展开的又一导出法 3.22 函数的计算 习题 第四章 超几何函数 4.1 超几何级数和超几何函数 4.2 邻次函数之间的关系 4.3 超几何方程的其他解用超几何函数表示 4.4 指标差为整数时超几何方程的第二解 4.5 超几何函数的积分表示 4.6 超几何函数的巴恩斯(Barnes)积分表示 4.7 F(a,β,γ,1)之值 …… 第五章 勒让德函数 第六章 合流超几何函数 第七章 贝塞耳函数 第八章 外氏椭圆函数 第九章 忒塔函数 第十章 雅氏椭圆函数 第十一章 拉梅函数 第十二章 马丢函数 附录 附录一 三次方程的根 附录二 四次方程的根 附录三 正交曲面坐标系 参考书目 符号 索引 外国人名对照索引 出版后记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值