switch结构:多选择结构
if - else if - else 与 switch的区别:if- else if - else (布尔表达式区间),switch表示值;
1 //测试switch语句
2 public class TestSwitch {
3 public static void main(String[] args){
4 int month = (int)(1+12*Math.random());
5 System.out.println("月份:"+month);
6 switch(month){
7 case 1:
8 System.out.println("一月份,过年了!");
9 //break;
10 case 2:
11 System.out.println("二月份,开春了!");
12 //break;
13 default:
14 System.out.println("我是其他月份!");
15 break;
16 }
17 }
18 }
注意:break的使用while(布尔表达式){
循环体;
}
1 public class TestWhile {
2 public static void main(String[] args) {
3 //计算1+2+3+……+100的累加的和,5050.
4 //暴力
5 int i=1, sum = 0;
6 while (i<=100){
7 sum= sum+i;
8 i++;
9 System.out.println(sum); //表示执行过程
10 }
11 //System.out.println(sum);
12 }
13 }
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。
1 public class TestFor {
2 public static void main(String[] args) {
3 //计算1到100的整数和
4 int i,sum=0;
5 for (i=1;i<=100;i++){
6 sum=sum+i;
7 }
8 System.out.println("sum="+sum); //双引号里的是字符串 ,syso在面里面
9 }
10 }
用for 输出:1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
1 public class TestWhile {
2 public static void main(String[] args) {
3 int i,j;
4 for (i=1;i<=5;i++){
5 for (j=1;j<=5;j++){
6 System.out.print(i+" ");
7 //print 里面必须有内容," "里面是空格 得出结果是 11111 22222 33333 44444 55555
8 }
9 System.out.println();
10 //再换行,得出结果;
11 }
12 }
13 }
1 //乘法口诀,用for
2 public class TestFor {
3 public static void main(String[] args) {
4 int i,j,s=0;
5 for (i=1;i<=9;i++){
6 for(j=1;j<=i;j++){
7 s=j*i;
8 System.out.print(j+"*"+i+"="+s+" \t");//横向跳到下一制表符位置
9 }
10 System.out.println();
11 }
12 }
13 }
break终止整个循环,continue终止本次循环。
带标签的break和continue:
goto 是 Java的一个保留字,但并未在Java语言中得到正式使用;
Java没有goto语句。
方法的定义_形参_实参_返回值_语句块:方法就是一段用“来完成特定功能的代码片段”,类似于其它语言的函数
方法声明格式:
【修饰符1 修饰符2 _】 返回值类型 方法名(形式参数列表){
Java语句:_ _ _
}
方法的调用方式:
对象名.方法名(实参列表)
方法的详细说明
1.形式参数:在方法声明时用于接收外界传入的数据。
2.实参调用方法是实际传给方法的数据。
3.返回值:方法在执行完毕后返还给调用它的环境的数据。
4.返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为void。
//测试方法的基本使用
1 public class TestMythod {
2 public static void main(String[] args) {
3 //通过对象调用普通方法
4 TestMythod tm= new TestMythod(); //类创建对象
5 tm.printSxt(); //调用对象的方法
6 int c = tm.add(30, 40, 50)+1000; //实际参数
7 System.out.println(c);
8 }
9 void printSxt(){
10 System.out.println("北京尚学堂…");
11 System.out.println("上海尚学堂…");
12 System.out.println("广州尚学堂…");
13 }
14 int add(int a , int b, int c){//形式参数
15 int sum= a+b+c;
16 System.out.println(sum);
17 return sum; //return 两个作用:1.结束方法的运行;2.返回值
18 }
19 }
注意事项:
1.实参的数目,数据类型和次序必须和所调用的方法声明的形式参数列表匹配;
2.return语句终止方法的运行并指定要返回的数据;
3.Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是参数的副本);
4.基本类型传递的是该数据值得copy值;
5.引用类型传递的是该对象引用的copy值,但指向的是同一个对象。
方法的重载:overload,
实际是完全不同的方法,只是名称相同
递归算法_递归头_递归体(本质:自己调自己,典型例子:阶乘,如算5的阶乘)
1.定义递归头。 什么时候不调用自身方法,如果没有头,将陷入死循环,也就是递归的结束条件;
2.递归体。 什么时候需要调用自身方法。
面向过程和面向对象的区别都是对软件分析,设计和开发的一种思想,它指导着人们以不同的方式去分析,设计和开发软件。
面向过程思想思考问题是,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。
这个适合简单任务,不需要过多协作的情况下。比如,如何开车?
面向过程适合简单,不需要协作的事物。但是当我们思考比较复杂的问题,比如“如何造车?”,就会发现列
出1234这样的步骤,是不可能的。那是因为,造车太复杂了,需要很多协作才能完成。此时面向对象思想就应运而生了。
面向对象(object)思想更契合人的思维模式。我们首先思考的是“怎么设计这个事物?”
比如思考造车,我们就会先思考“车怎么设计?”,而不是怎么按步骤造车的问题。
对象是什么_对象和数据管理
事物的发展总是遵循“量变引起质变”的哲学原则;
数据管理: 数据无管理,数据管理和企业部门制,对象和企业项目制
类:我们叫做class,对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。
类中创建对象
类中创建对象和方法的实例:
1 public class TestLei {
2 void study(){
3 System.out.println("现在必须好好学习");
4 }
5 void work(){
6 System.out.println("然后好好工作");
7 }
8 void time(){
9 System.out.println("剩下的时间是安详");
10 }
11 TestLei(){ //系统自动省略
12 }
13 public static void main(String[] args) {
14 TestLei lei = new TestLei();//有new的就是代表自动创建一个对象,(TestLei(){}表示构造方法,
15 用于创建这个类的对象,无参的构造方法可以由系统自动创建)
16 lei.study();
17 lei.work();
18 lei.time();
19 }
20 }
Java虚拟机的内存可以分为三个区域:栈stack,堆heap,方法区methond area
栈的特点如下:
1.栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出
口等)
2.JVM 为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)
3.栈属于线程私有,不能实现线程间的共享!
4.栈的存储特性是“先进后出,后进先出”
5.栈是由系统自动分配,速度快,栈是一个连续的内存空间!
堆的特点如下:
1.堆用于“创建好的对象和数组”(数组也是对象)
2.JVM只有一个堆,被所有线程共享
3.堆是一个不连续的内存空间,分配灵活,速度慢!
方法区(又叫静态区)特点如下:
1.JVM只有一个方法区,被所有线程共享;
2.方法去实际也是堆,只是用于存储类,常量相关的信息!
3.用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】,静态变量,字符串常量等)