注:凡是没有列出的,基本上和C++的差不多,不在论述
关键字:final
在c++中常量的关键字为const
作用和const
一样,不能进行改变。
如果希望某常量可以在一个类的多个方法中进行使用,可以用关键字static final
感觉和C++类似哈
如果这个常量用public
进行修饰的话,说明其他的类也可以进行访问,当然方法被他修饰的话,也可以被其他的类进行访问。
String
支持字符串和数字的连接。
里面方法和C++的也差不多,比如javasubstring
与C++中substr
java中的String
不能进行修改,而C++string
可以直接修改。
如果比较Java中的String
字符串,不能直接用==
号进行比较,因为Java中直接用==
进行比较就是比较的地址和c语言的比较字符串一样。但是C++中string
用==
比较的是字符串的内容。因为C++中==
被重载了。
比较Java中的字符串用equals
的方法。
在java的api中:
chat chatAt(int index)
返回的为index
对应的字符串中第index
对应的字符
int codePointAt(int index)
返回的是index
对应的字符串中第index
对应字符ASCII对应的十进制的数。
如果想拼接字符串,如果直接用String
的话,会用空间、效率问题。
所以这里我们使用StingBuilder
类。
比如下面的方式进行构建:
javapublic class Main {
public static void main(String[] args) {
StringBuilder builder=new StringBuilder();
builder.append("mao");
builder.append("le");
String str=builder.toString();
System.out.println(str);
}
}
输入还是不是很容易的
我们可以用Scanner
类进行输入,怎么用呢?看下面的例子:
javaimport java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("输入一个整数:");
int x=scanner.nextInt();
System.out.println("这个整数为"+x);
System.out.print("输入字符串:");
String str=scanner.next();
System.out.println("输出字符串"+str);
System.out.print("输入一个浮点数:");
float f=scanner.nextFloat();
System.out.println("输出一个浮点数"+ f);
}
}
/*
输入一个整数:12
这个整数为12
输入字符串:maoleiscool
输出字符串maoleiscool
输入一个浮点数:1.234
输出一个浮点数1.234
*/
Scanner
类中有很多api,直接看文档就行。
上面的print
和println
的差别就是输出的有没有换行
和c语言中的printf
一样,Java中用的也是这个名字
格式化输出看文档就行,不在论述
文件的输入输出,emmmm,感觉没有意思,不写了。
条件、循环都和C++都差不多。
就是switch
,从Java7后,case
可以为常量字符串,这是C++不允许的。
Java的循环中break
可以跟标签,跳到标签的位置,感觉不太常用,说明一下。
作为C/C++选手,我们肯定做过关键大数加法、乘法的题目。
好吧,Java可以直接处理大数
在java.math
包中BigInteger
和BigDecimal
第一个处理整型,第二个处理浮点数
用valueOf
处理普通的数
javapublic static void main(String[] args) {
//普通是数变成大数
BigInteger bigInteger=BigInteger.valueOf(11111111);
System.out.println(bigInteger);
//如果是非常大的数,可以用下面动态的方法
bigInteger=new BigInteger("12345678654323245678765432");
System.out.println(bigInteger);
}
变成大数之后,就不能单纯的用+
等运算符进行运算了,用add
等类似的方法。
int[] a = new int[常量]
其实也可以这样写int a[] = new int[常量]
java程序员大部分喜欢第一个,因为这样可以清楚的看出变量的类型。
匿名数组:看下面的例子
int[] a = new int[]{1,2,3,4,5,6}
javapublic static void main(String[] args) {
int[] a=new int[]{1,2,3};
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
数组一旦确定长度之后,就不能改变长度了,和C++中的一样。想要改变长度就要用其他的数据类型。
除此之外,Java的数组是一种数据结构,与C++中的数组还是有区别的。从a.length
就能看出。
对于遍历数组,可以用常规的方法进行下标的形式进行遍历,也可以用for each
它的样子就如同C++中的范围for
对上面的代码进行修改:
javafor(int x:a)
{
System.out.print(x+" ");
}
如果像这样:int[] b=a
那么,此时的拷贝是浅拷贝——指向同一块空间,改变b,就是改变a
如果想要进行深拷贝就需要用到Arrays
类的copyOf
方法。怎么使用,嘿嘿,自己看文档。
我们会发现java中的main方法中有个参数String[] args
这个其实是命令行参数,在c语言中main函数的参数也是有的,只不过c语言中出来传命令行参数,还可以传环境变量
int main(int argc, char *argv[], char *envp[])
在Linux环境变量中我讲过该知识点。
当然要看到效果,要在终端上上演示。
用Arrays
类的sort进行排序即可Arrays.sort(a)
好吧,Java确实没有多维数组,就是一维,所谓的多维也是一维上又加了数组,而且可以不规则(只开行,暂时不开列,然后动态开辟列),6啊!!!!
javaint [][] a=new int[2][2]
它可不是像下面这样分布的
而是这样的: