core java--day5(随机数,可变参数,类与对象,代码在内存中运行机制)

复习:
 数组
 创建的时候长度固定:因为要连续的内存空间
 不能改变长度:
  只能通过赋值一个新的数组
  System.arraycopy(五); //目标数组;从哪个位置;新数组;从哪个位置;长度
  
 Array.sort(arr);
 Array.toString(arr);
  
 int[] arr = new int [10];
 int[] arr = {12,24};
 int[] arr = new int []{24,235,252};
 



随机数:
 一:java.lang.Math.random();//java.lang下的类不需要导入包
  double d = Matn.random();//从0.0到1.0
  double d = Matn.random()*99+1;//从1到100取值 :Math.random()*(n-m)+m;
 
 二:java.util.Random;
  Random r = new Random();
  r.nextInt(10);//从0到10取值
  

package com.briup.ch5;
import java.util.Random;
public class Test1{
	
	public static void main(String[] args){
		
		//产生四位随机数
		String code = "";
		//创建随机数对象
 		Random r = new Random();
 		for(int i =0;i<10;i++){
			//获得0到30之间的随机数
//			System.out.println(r.nextInt(30));
   			code += r.nextInt(10);
			if(i==3){
				break;
				}
/*		double d = Math.random();
		System.out.println(d);
*/	
}
		System.out.println(code);
		}	
	}



可变参数:等价于数组
 可以接收任意多个数据
 只能位于方法参数的最后一个
 可变参数的使用等价于数组
 
 public void show(int... id){
  id[0];
  id.length;
 }
 public void eat(int... id,int age){//这样不可以,id会把所有参数接收
 
 }
 
 show();
 show(1,2,3);

package com.briup.ch5;
import java.util.*;
public class Test2{
	
	public static void main(String[] args){
		
		Test2 t = new Test2();
		t.show(1);
		t.show(1,2,3);
		}

	public void show(int... id){
		
		for(int i =0;i<id.length;i++){
			
			System.out.println(id[i]);
			}
			System.out.println(Arrays.toString(id));
		}
	}

 
面向对象编程:

 前导:
         面向对象(Object-Orientation,简称OO)是一种系统建模技术/编程思想
                     OO:面向对象,是一套集编程思想,方法,原则,模式,解决方案等为一体的编程模式。
                     OO的思想贯穿于整个软件开发的过程,比如需求分析,设计,编程,测试,升级等.

      知识点速记:面向对象就是以类和类之间的关系去考虑 需求,编程...等。
  
 1,oop解释:按照面向对象的思想进行编程
 2,明确的需求:
           2.1:问题域:当前的业务作用范围。
                     问题域 : 校内
                     需求 : 点名
           2.2:核心任务:最主要的功能
 3,面向对象编程的特点:抽象,封装,继承,多态
 
第二部分:面向对象编程的四个基础特点之抽象
           1,抽象:忽略掉一个对象或实体的细节
                       而只关注其本质特征的过程。

                       瞎想的过程.

 哪吒{
   武器 : 乾坤圈,混天绫,风火轮,枪
   状态 : 三头6手
   体质 : 莲藕
   大闹东海
 }
        【抽象是为了得到 类(模板) 】
         
          2,抽象需要解决的两个事情:
                    2.1:抽象出Xxx的属性
                    2.2:抽象出Xxx的行为
 
 哪吒{
   武器 : 乾坤圈,混天绫,风火轮,枪
   状态 : 三头6手
   体质 : 莲藕
   大闹东海
 }
 class 哪吒{
    String w1 = "乾坤圈";
    String w2 = "混天绫";
    String w3 = "风火轮";
    String w4 = "枪";
    String body = "莲藕";
    String status = "正常"/"三头6手";
 
           public String 大闹东海(){
      return "龙筋";
    }
 }

 需要结合问题域进行抽象
 eg:
    孙悟空:
              没有爹妈
      
       衣服: 虎皮裙/好衣服
       头盔 : 紫金冠

       打如来

       打黑熊精
       打白骨精
       打野猪精
       打蜘蛛精

 class 孙悟空{
    boolean isOnly = "true";
    String yif;
    String headk;
    public String 打(String name){
  return "";
    }
 }


          3,抽象完成以后得到的就是 类-->所有Xxx的模板
  
第三部分:类和对象的概念
1,类
         1.1:万物皆可以抽象:
                   问题领域中的实体和概念都可以抽象得到对应的类。

         1.2:类是啥:类是java中一种复杂的数据类型

         1.3:类的作用:
                   1.3.1:描述数据 : 属性
                   1.3.2:操作数据 : 方法
  
知识点速记:类使用成员变量描述数据(没有具体的值),使用方法操作数据。


         1.4:类是元数据:描述数据的数据,因为数据在面向对象领域里以对象的形式存在,所以类是对象共有属性和方法的抽象描述。

2,对象
   具有类中所有的属性和方法,
   属性值可以不同,
   方法实现可以不完全一样,
  
   具有相同属性和行为的一组个体-->对象

            2.1:类是模板,对象是该模板产生的一个个体。
            2.2:个体的作用:
                   这个个体,可以【调用】自己的【方法】操作数据。
                   这个个体,可以给成员变量【赋值和取值】。

 特殊对象 : 只用来存储有关联关系的数据
      javaBean  没有操作数据的方法
 特殊对象 : 只用来操作数据的
     service 只有方法;
 特殊对象 : 用来和数据库交互
     dao
 

    小节:对象是在程序中可以使用的单位,
             对象中又包含很多数据,
             所以,java程序的运行是各种对象的相互交互作用。

  
第四部分:类中属性和方法的定义和使用
1,属性
            1.1:在类中声明属性:
                  语法:  修饰符 类型 变量名
                  修饰符 类型 变量名 = 值;
eg: private String name = "小明";
      public int age;
      protected boolean isonline;

 public 公有的,
        都可以访问
 protected  保护 : 只有子类能访问
 private    私有的:  只有当前类内部能使用
 不写 (friendly)默认的: 只能在当前包中访问

注:类的成员变量可以不给初始值,会有默认值。
2,方法
         2.1:声明:类中方法的声明:
               语法: 修饰符 返回值类型 方法名(参数列表)
              [throws 异常类型]{

          //代码体
          //如果返回值类型不为void那么必须有
          return 返回值类型的数据;
         }
参数列表:用来声明变量,
           声明的变量可以在当前方法中使用
           [没有赋值]
         2.2:使用:类中方法的使用(调用).
               语法:对象.方法名(参数列表对应类型的值);
eg:
类  对象名 = new 类();
对象名.show(10);//①
那么执行①的时候 就会去执行show方法中的代码。
调用方法时候传入的10 是实际参数。
注意:对象调用方法,只有这个方法是属于该对象才能被调用到。

知识点速记:方法声明参数的是形式参数
     调用方法时传入的参数是实际参数。 
  

参数传递:
          参数传递的是当前值的地址
 
 堆:对象实例  new Student(把对象的所有属性与方法代码都写入)
 栈:基本数据类型;对象的引用;被执行的方法 10;Student stu ,int i; stu.show();
 方法区:class 引用,类信息,方法信息,静态资源  类加载时将类信息(名称,方法名)写入(不会写具体代码),将static修饰的资源写入
 运行时常量:常量+"字符串"   :相当于就是字符串

代码在内存运行机制:
 1.javac
 2.java 类名 --> 触发类加载
 3.类信息放到方法区   类加载结束
 4.自动调用main方法开始执行代码
 5.main方法入栈,开始执行
 6.创建对象,调用show方法
 7.show方法入栈
 8.执行show
 9.show执行完毕 出栈
 10.main执行完毕 出栈
 11.jvm释放所有内存
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值