考试周了,忙着复习(预习)高数和大物,忽然发现后面还有个java课设要做。。而我一学期java课就去了1节。。
只好抓紧时间速成一波java了

基础数据类型

整型

c和c++中并没有明确规定整型具体时多少,在不同的机器上整型的范围可能是不同的。
而java整型的范围是和运行java代码的机器无关的,整型乃至各种数据类型的取值范围都是固定的

浮点类型

有三个特殊的浮点数值

  • 正无穷大(Double.POSITIVE_INFINITY)
  • 负无穷大(Double.NEGATIVE_INFINITY)
  • NaN(不是一个数字)(Double.NaN)

检测一个特定值是否等于Double.NaN

1
if(Double.isNaN(x))

char类型

java中char类型都是16位的,使用unicode编码
关于unicode编码和各种编码的区别,推荐阅读
https://www.zhihu.com/question/20209966/answer/676684648?utm_source=com.yinxiang&utm_medium=social&utm_oi=581602271008264192

boolean类型

java中false并不等于0,true不相当于非0值,所以像

1
if(x=0)//oops...mean x==0

这样的测试是不能通过编译的,因为x=0不能转化为布尔值

常量

1
final double PI = 3.14;

字符串

  • java的字符串是标准java类库中的一个预定义类,每个双引号括起来的字符串都是String类的一个实例

  • 在java中,String类对象被称为不可变字符串,字符串”hello”永远包含字符h,e,l,l,o的代码单元序列,而不能修改其中的任何一个字符。当然,可以修改字符串变量使其引用另外一个字符串。

  • 不能使用==比较两个字符串是否相等。该运算符只能确定两个字符串是否放置到在同一个位置上。这点和c++的string类有很大不同

  • 空串””是长度为0的字符串,null则是表示目前没有任何对象与该变量关联

数组

1.基础的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*两种声明方式皆可*/
int[] a;
int b[];
int[] c = new int[100];

for(int i=0;i<c.length;i++)//初始化数组
c[i] = i;

for (int i : c) //for each循环
System.out.println(i);

System.out.println(Arrays.toString(c));/*返回一个包含数组元素的字符串*/

int[] smallPrimes = {2,3,5,7,11,13};
smallPrimes = new int[]{17,19,23,29,31,37}; /*用匿名函数重新初始化数组*/

int[] copiedsmallPrimes = Arrays.copyOf(samllPrimes,smallPrimes.length);/*拷贝数组*/

Arrays.sort(smallPrimes); //对数组排序

2.多维数组

1
2
3
4
5
6
7
int [][] magicSquare =
{
{16,3,2,14},
{32,43,53,34}
};

System.out.println(Arrays.deepToString(magicSquare));//快速打印二维数组

3.不规则数组

1
2
3
4
5
6
7
8
9
10
11
final int NMAX = 20;
int[][] odds = new int[NMAX+1][];//分配一个具有所含行数的数组

for(int n=0;n<=NMAX;n++)
odds[n] = new int[n+1]; //分配行
//访问不规则数组
for(int n=0;n<odds.length;n++){
for(int k=0;k<odds[n].length;k++){
odds[n][k] = k;
}
}