目录
输入输出上的区别
输入
输出
数据类型上的区别
不同数据类型运算上的区别
逻辑运算上的区别
数组上的区别
循环结构中标签的使用上的区别
-
输入输出上的区别
输入
Java没有专门用于输入的函数scanf,而是要导入import java.util.Scanner,即导入util包中的Scanner类,定义Scanner类上的对象(Scanner scan = new Scanner(System.in)),利用对象引用相关的输入函数Int型scan.nextInt()、String型scan.next()、byte型scan.nextByte()、float型scan.nextFloat()、double型scan.nextDouble()。
同时Java没有提供输入char类型的函数,而只能通过输入String型的函数(str = scan.next()),然后使用str.charAt(i)函数引用第i个字符。
输出
Java中也没有提供专门用于输出的函数,而是通过System.out.print()函数或是System.out.println()输出到屏幕上,二者的区别是println输出数据后会进行换行。
import java.util.Scanner;
class Show{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);//定义Scanner类的一个对象scan
byte byteNum = scan.nextByte();
int num = scan.nextInt();
short shortNum = scan.nextShort();
long longNum = scan.nextLong();
float floatNum = scan.nextFloat();
double doubleNum = scan.nextDouble();
boolean booleanNum = scan.nextBoolean();
String str = scan.next();//遇到空格、回车就停止输入,剩余数据储存于缓冲区
String strLine = scan.nextLine();//遇到回车停止输入
System.out.print(byteNum);//输出完数据不换行
System.out.println(byteNum);//输出完数据换行
System.out.print(num);
System.out.println(num);
}
}
-
数据类型上的区别
Java中提供了8中数据的类型:byte(只占一个字节), short, char, int, float, double, String, boolean(布尔型)。
其中String类似于字符数组,可以存放字符串,但是又不尽相同。主要是String型的数据可以被直接赋值,而C语言中的字符串数组必须通过strpy函数进行直接的变化。而且String型数据的大小是随着赋值数据的大小的变化而变化的,赋予不同的数据,String型数据的大小随之发生变化。
class Show{
public static void main(String[] args){
String str = "hello";
System.out.println(str);
str = "world";
System.out.println(str);
str = "I love China";
System.out.println(str);
}
}
-
不同数据类型运算上的区别
byte, short, char, int, float, double这六种类型的数据是可以直接进行数值之间的计算的。而且byte, short, char这三种类型之间的相互运算(除char型之间)所得的结果一定为int型,而不是类型的自动提升。
此外String型的数据是不能强制转换成其它类型的数据,会编译报错。而且String数据与其他数据之间的’+’运算并不是普通的数值运算,而是“连接”(即直接连接起来)。例如123(int型) + “Java”(String型)的结果是“123Java”。
boolean类型的数据也与C语言中的不同,Java中boolean型的数据只能为true或者false,而且true也不代表1,false也不代表0。布尔型的true与String型的“Java”相连接,结果是“trueJava”。Boolean型的数据也不能和其他六种类型的数据进行数值运算。
//测试Java当中的布尔型变量与C语言不同,不可以当作0和非0
class testBool{
public static void main(String[] args){
boolean bool = true;
//int num = 1 + bool;
//System.out.println(num);编译不成功,boolean型变量不能直接与int型变量相加
String str = "" + bool;//这里的‘+’并不是相加,而是“连接”
System.out.println(str);
}
}
-
逻辑运算上的区别
Java中除了&&,||,!之外还提供了&, |, ^(异或),单目&和|与双目的不同在于,单目连接的两个表达式都会进行运算,而双目连接的两个表达式一旦前面的已经可以决定结果,后面的表达式就不再进行运算。
-
数组上的区别
Java中不能直接定义数组的大小,而是只能在定义了类型后在使用new分配空间。int[] num;(这里也可以使用int num[];)num=new int[3];其他类型与之类似。所有数组都只能在分配空间之后再使用。
如果num已经分配了空间,还使用num = new int[5];,这时会对num进行新的空间分配(就是说num数组的内存空间已经发生了变化)。
class Show{
public static void main(String[] args){
char[] array = new char[3];
int i;
for(i = 0; i < 3; i++)
array[i] = (char)(i + 97);
System.out.println(array);
array = new char[12];
for(i = 0; i < 12; i++)
array[i] = (char)(i + 65);
System.out.println(array);
}
}
-
循环结构中标签的使用上的区别
C语言中break和continue都只能退出或者跳过离这个语句最近的一层循环,而Java中提供了一种机制可以给循环定义一个标签,然后退出或者跳过指定的循环体。
class Show{
public static void main(String[] args){
label:for(int i = 1; i < 10; i++){
for(int j = 1; j < 10; j++){
if(j % 4 == 0)
continue label;//标签
System.out.print(j);
}
System.out.println();
}
}



