.NET中变量的类型问题
1.JAVA和C# Byte的不同。
java里一个byte取值范围是-128~127, 而C#里一个byte是0~255.
首位不同. 但是底层I/O存储的数据是一样的,
比如, 十进制的100, 转换成java或者c#的byte, 都是1100110.
但是, 使用java的getBytes()方法, 得到的是负数,即: -100110
使用C#的getBytes(),得到的是正数.1100110.
这在底层socket传输应该注意.
2. 取值范围比较
log>int>short>byte;
double>float
3. 隐式转化 和 显式转换
隐式转换: 当小范围的类型 向 大范围的类型转换时。
int a =5;
long b = a; //发生了隐式转换
显式转换: 当大范围的类型 向 小范围的类型转换时,必须显式转换。
double a =0.1;
float b =(float )a;//这里必须显式转换一下。
PS:值类型之间互相引用,方式是拷贝一个副本。所以存在转换的问题。
4. 加一个F(两个整数运算时,返回一定还是整数。)
float变量 后面最好加一个F
整数常量在参与运算,最好在末尾加一个F。
防止精度丢失
5.字符串的转意字符
1)字符串中 \ 标示他后面的字符具有特殊含义。当我们想输出 \ " 等 字符时,在前面使用\进行转意。
2)在字符串前面 加@,强制不转义!
6.各种类型的最大值、最小值。
int:最大值int.MaxValue ;最小值: int.MinValue,其他数值类型也可以通过MaxValue、MinValue获取取值范围。
7.类型转换问题
显式类型转换仅限整数、小数类型之内。
其他数据类型转换为string:
1) .ToString()/推荐:(其他类型没有)
2) Convert.ToString() 。
3) string.prese()
8.Convert 与 prese的区别 还有 int.TryParse
1)名字不同(这条是扯淡)
2)Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:
3)Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。
4)Convert.ToInt32 参数为 "" 时,抛出异常;
int.Parse 参数为 "" 时,抛出异常。
5) Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
6)int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,
转换成功返回 true,转换失败返回 false。
最后一个参数为输出值,如果转换失败,输出值为 0。