System.out.println();//这一条语句可以实现换行System.out.print()这条语句一点意义都没有。(System是一个类)
Break作用的范围:要么是switch语句,要么是循环语句。
C语言中貌似没有可以这样指定的跳出:
Xiaoqiang:for(int x=0;x<4;x++)
{
Wangcai:for(int y=0;y<4;y++)
{
System.out.pritln(“x=”+x);
Break;//默认跳出Wangcai循环
Break xiaoqiang;//这样就会跳出外面的循环,只打印x=0;
}
}
Continue:作用范围为循环结构,继续循环而已,跳出本次循环,不跳出循环结构
for(int x=0;x<3;x++)
{
continue;//放在上面和下面是有很大区别的,放上面的话那么下面那条语句永远执行不了。当然continue和break一样,也可以标志自己的名称。
System.out.println(“x=”x);
}
函数:
代码示例:
class Demo1
{
static int add(int a,int b)
{
int c=a+b;
return c;
}
public static void main(String[] args)
{
int a=2,b=3;
int c;
c=add(2,3);
System.out.println(c);
}
}
如上代码中,若是add函数(之前我就是放在main的后面控制台报错,显示;有问题,果然这一点与C语言中的语法类似,可能大致是需要声明),直接把该函数放在前面就可以解决问题。
没有返回值的函数体中可以加一句来结束函数:return;(如果返回值类型是void,函数中的return语句也可以省略不写)其实你不写也有,系统自动会给你加上。
普通函数要和主函数并列写,不要写在主函数里面。函数是用于封装功能的,加法函数的功能就是相加,不要在里面写打印语句,这样写不太规范。语法虽然没有错误。返回结果交给调用者来处理。
内存加载过程:(自己要理清楚,主函数运行完后也释放内存)
Java命令一运行就会启动虚拟机。编译的时候不会去找主函数,但是运行的时候去找主函数。如果没有主函数的话,编译的时候不会报错,但是运行的时候去找主函数的时候,会发现找不到主函数而报错。
重载(overload):同一个类中允许存在一个以上的同名函数,只要他们参数个数或者类型不同即可。(注:与函数的返回值类型无关)
未知内容参与的不同,功能类似时可以考虑使用函数重载。
数组:参见定义方式:int[] arr=new int[3];
内存的划分:
寄存器区(CPU处理)
本地方法区(与所在系统有 关、分版本的)
方法区(目前没讲)
栈(局部变量,作用域一旦结束就自动释放)
Heap(存储的都是实体,数组(数组其实就是对象)和对象/也可以说凡是new出来的东西都在堆里)堆里面的东西不会随时释放的。 实体可以用来封装数据,还可以封装多个。
int[] arr=new int[3];(内存图解)
叫做arr(引用数据类型)引用了堆内存中的一个实体或者指向了堆内存中的一个实体。
arr[0]=89;//可以改变堆内存中的值,从0变为89
arr[0]=null;//不能为0,这句可以让arr不指向任何实体。此时,堆内存的该数组没有人去指向了,不定时的被回收(垃圾回收机制与C++很大的不同,C++需要手动释放内存)。
堆:每一个实体都有首地址值;堆内存里面的变量均有默认初始化值,数组中的每一个元素的值均为0。
如果实体没有被指向,那么该实体就是垃圾。
当数组越界时,编译不报错,但是JVM创建实体的时候才可以检查出来。(因为编译的时候并没有创建实体)
ArrayIndexOutOfBoundsException//数组角标越界的标注,当访问到数组不存在的角标时,就会发生该异常。
NullPointerException//当引用型变量没有任何实体指向时,还在用其操作实体,就会发生该异常。
直接打印数组名时,例如出现 [I@c17164(@后面的是数组实体的哈希值,由哈希算法计算出来的数组的16进制地址值)左边代表实体的类型,[表示数组,而I表示int类型的。
(当不知道该变量接收的是什么类型的实体,可以这样打印测试下,看左侧即可知道接收的数据类型)