java基本数据类型的扩展问题
单精度浮点数的初始化
float f1=1.1f
或者
float f2=1.1F
浮点数的误差
float f1=1212121212f;
float f2=f1+1;
System.out.println(f1==f2);
输出结果:
true
假如我们需要做一个银行管理系统,那么使用浮点数来存储用户的钱显然是不行的。这时,我们可以使用java的一个数学工具类BigDecimal来解决存储比较大的数字的问题。
字符和数字之间的转换
字符转数字:
char char1='a';
System.out.println((int)char1);
输出结果:
97
数字转字符:
char char2=97;
System.out.println(char2);
输出结果:
a
所有的字符本质还是数字,编码可能有不同的方式,一般使用的是Unicode编码
字符串拼接问题
int x=20;
int y=21;
System.out.println("字符串在前"+x+y);
System.out.println(x+y+"字符串在后");
结果:
字符串在前2021
41字符串在后
如果字符串在数字的前面的话,后面的x和y会正常的进行字符串拼接;
如果数字在字符串的前面,x和y会先进行加法运算,再和字符串拼接。
稀疏矩阵
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
- 记录数组一共有几行几列,有多少不同的值
- 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
原始矩阵
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
public class Test {
public static void main(String[] args) {
//矩阵初始化
int[][] arrary1=new int[11][11];
int sum=0;
arrary1[1][2]=1;
arrary1[2][3]=1;
//统计不为0的个数
for (int i=0;i<arrary1.length;i++){
for (int j=0;j<arrary1[0].length;j++){
if (arrary1[i][j]!=0){
sum+=1;
}
}
}
//创建一个稀疏矩阵
int [][] arrary2=new int[sum+1][3];
int n=0;
arrary2[n][0]=11;
arrary2[n][1]=11;
arrary2[n][2]=sum;
//稀疏矩阵的初始化
for (int i=0;i<arrary1.length;i++){
for (int j=0;j<arrary1[0].length;j++){
if (arrary1[i][j]!=0){
n++;
arrary2[n][0]=i+1;
arrary2[n][1]=j+1;
arrary2[n][2]=arrary1[i][j];
}
}
}
//打印稀疏数组
System.out.println("行 列 值");
for (int i=0;i<arrary2.length;i++){
for (int j=0;j<arrary2[0].length;j++){
System.out.printf("%2d ",arrary2[i][j]);
}
System.out.println();
}
}
}
输出结果:
行 列 值
11 11 2
2 3 1
3 4 1