//这里最好大写,因为在JAVA的编程规范里面,类的名字首字母要大写,而文件的名字要跟类名保持一致
//这里是不符合规定的,这里正确的应该是 文件名为Hello.java 类名应该叫public class Hello
//下面是第一个java应用程序
/*
public class hello{
public static void main(String args[])
{
int i=0;
for(i=0;i<3;i++)
{
System.out.println("hello java");
}
}
}
*/
//C里面的数据类型
//基本数据类 char unsigned char short unsigned short int unsigned int long float double
//指针
//java跟C语言很类似,他也分为两种
//基本数据类型:char(2字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节) byte(1字节) boolean(1字节)
//引用数据类型:数组,类,接口,NULL
//值得注意的是,在C语言里面,char是一字节,但是在java里面它是两个字节。这是因为在java里面它里面的编码是unicode。
//它用一个char可以表示英文,也可以表示汉字等等。而我们C语言的char只能表示英文字母啊,标点符号啊。
//java里面没有指针
public class hello
{
public static void main(String args[])
{
//由于java里面没有指针,所以你在C语言里面的那句 int *p=malloc(10*sizeof(int)) 用下面的语句代替
int p[]=new int[10];
//注意你用下面这种方式定义一个数组也是错的,你只能用上面的那个方式定义
//char a[100];
char a[]=new char[100];
//为什么会有这种错误,因为在C语言里面,int *p=malloc(10*sizeof(int))
//这个P变量是放在栈里面的,
//但是java用的语句是这句话 int p[]=new int[10]
//这里也是一样的 p是放到栈里面的,但是new出来的空间是放在堆里面的
//char str[100] 这个数组是放到栈里面的,但是在JAVA里面它是放在char str[]=new char[100]
//这里str是放在栈里面的,而new出来的空间是放在堆里面的。在JAVA里面所有的数组都是引用数据类型。
//str只是某一块堆空间的地址,它引用的只是这块堆的空间。
//你还可以用int p2[]={1,2,3,4};这叫静态分配。这句话在C语言和java有什么区别呢
//在C语言里面 你int p2[]={1,2,3,4};它里面的数据放到栈里。
//在JAVA里面,int p2[]={1,2,3,4};这p2还是放到栈里面,但是这个1 2 3 4放到堆里面
//在JAVA里面,它里面的数组永远都是放到堆里面的。栈里面只放p2这个变量,它里面存放的是一个地址值,这个的地址指向一个堆空间
//在JAVA里面,你如果定义一个字符串,不能用char str[]="abc"。而要用String这个类。
//除了一般数据类型之外,其他的都是引用数据类型。所谓引用数据类型,表明变量所引用的空间在堆里。所以这个abc也在堆里面
String st="abc";
//大家有没有觉得奇怪,我在C语言中malloc之后,一般来说我们要free掉它。
//但是在我们JAVA里面它没有释放操作,怎么回事呢,它会帮我们自动释放,什么时候会帮我们自动释放。在我们JAVA里面如果想要它自动释放的话,如下
//int a[]=new int[10]
//a=NULL;就可以了。JAVA里面的垃圾回收机制就会把那段这块空间给你释放掉
//但有一种情况,如下
//int b[]=a;
//这样只有当a=NULL和b=NULL它才会释放,说白了就是只有没有人引用那段空间才会被释放。
//数据类型转换:自动转换:数据不丢失的前提下可以自动转换
// 注意:整数默认是int,有小数时默认是double
// 强制转换:
// 比如你float f=3.14你默认是double类型的
// 但是你用一个float类型去装它。是装不下的,所以只能
// 强制类型转换
// 所以这里float f=(float)3.14;或float f=3.14f;
// 对于整数,编译器会帮我们判断它的范围。
// 比如说short b=4;上面说的整数默认是int类型的
// 但是这里4在short范围了。如果超过了这个范围就会报错
// 但是你short b=4;s=s+1之后就会报错。因为对于byte
// short的运算,为了保证精度,会自动转换为int。
}