• 20165324 《Java程序设计》第3周学习总结


    20165324 《Java程序设计》第3周学习总结

    教材学习内容总结

    本周学习内容如下:

    • 编程语言思想
    1. 面向过程语言的核心是编写解决某个问题的代码块;在面向对象语言中,最核心的内容是对象,一切围绕对象。
      2.面对对象编程的核心思想之一:将数据和对数据的操作封装在一起。通过抽象,形成一般概念。
    • 类的定义:包括;类声明和类体,格式为:
    class 类名{
        类体的内容
    }
    //class是关键字,用来定义类。
    
    

    类的目的是抽象出一类事物共有的属性和行为(与C语言的结构体相似)。类体的内容由变量的声明和方法的定义组成。

    • 方法的定义:包含方法头和方法体。格式为:
    方法头 {
        方法体的内容
    }
    //方法头由方法的类型、名称、和小括号里的参数列表所构成(与C语言中的函数相似)
    
    
    • 成员变量与局部变量:有效性的不同;关键字this的使用;局部变量必须保证有默认值,否则无法通过编译。
    • 类的UML圈:三层描述类的主要构成:
    1. 第一层:名字层
    2. 第二层:变量层
    3. 第三层:方法层
    • 构造方法是类中的一种特殊方法,保证方法名与类名一致,而且无类型。
      -. 创建对象:包含对象的声明、为对象分配变量。(与C语言结构体相似)分配对象使用new运算符和类的构造方法即可。如:
    // 书本p62
    XiyoujiRenwu zhubajie;//声明对象
    zhubajie=new XiyoujiRenwu();//为对象分配变量
    //等价于:
    XiyoujiRenwu zhubajie=XiyoujiRenwu();//声明对象的同时为对象分配变量
    
    
    • 对象的组合和复用

    • 构造方法:

    1. 作用:在创建对象时,给对象各个字段赋值
    2. 特点:构造方法的方法名与类名一致;构造方法没有返回值,也没有返回值类型;构造方法可以通过参数来接受数据;在没有显示定义构造方法之前,系统有一个默认的无参构造方法,当显示定义了构造方法之后,系统默认的无参构造方法就没有了;构造方法可以实现方法重载;构造方法在创建对象时,跟在new运算符后面,由系统调用。
    • 实例方法与类方法定义:实例方法类型前面不加任何关键字。

    • this的使用:this.x表示当前对象的变量x。

    • 包的使用和import语句的使用

    代码托管

    ps:有个疑问,我明明今天没有上传代码,为什么today代码有一千多行,会不会是因为我有时会把本地文件全删完,然后从码云上下载导致的呢?

    学习问题

    • 问题1:对于对象的组合的理解

    • 问题1解决方法: Circular类创建圆锥对象,将Circle类声明的对象作为自己的一个成员,只能这样写Circle bottom;,并且还需要设置bottom为一个Circle对象才能使用代码为:

    void setBottom (Circle c) {
            bottom=c;
        }
    
    

    感觉这一步是多余的,我注释了以后,程序也能运行.....

    • 看了下第五章知识,这一行有其他用处,疑问解决。

    • 问题2:调用方法,输出不了结果?

    -问题2解决方法:调用的输出方法,返回的值必须System.out.println();才会输出显示在屏幕上。

    • 问题3:对例子8的学习反省
      代码如下:
    //Circle类定义圆的半径、面积、半径读取的方法,返回半径的方法、圆的面积求解的方法。
    public class Circle {
    	double radius,area;
    	void setRadius(double r){
    		radius =r;
    	}
    	double getRadius(){
    		return radius;
    	}
    	double getArea() {
    		area=3.14*radius*radius;
    		return area;
    	}
    }
    
    
    /*Circular类定义了圆锥的底、高,因为底为一个圆,进而调用了Circle类声明了底bottom为一个Circle对象,即bottom可以调用Circle类中的方法,
    还定义了读取高的方法、圆锥体积的求解方法、圆锥的底的半径的读取方法、返回了圆锥的底的半径的方法。*/
    public class  Circular{
    	Circle bottom;
    	double height;
    	void setBottom(Circle c) {  //设置圆锥的底为一个Circle对象
    		bottom=c;
    	}
    	void setHeight(double h){
    		height=h;
    	}
    	double getVolme(){
    		if (bottom==null)
    		{
    			return -1;
    		}
    		else {
    			return bottom.getArea()*height/3.0;
    		}
    	}
    		double getBottomRadius() {
    			return bottom.getRadius();
    		}
    		public void setBottomRadius(double r){
    			bottom.setRadius(r);
    	}
    
    }
    
    
    
    //Dome06为主类,定义了main方法。
    public class  Dome06{
    	public static void main(String[] args) {
    		Circle circle=new Circle();                                                    //创建了circle的一个对象
    		circle.setRadius(10);                                                           //circle的半径为10
    		Circular circular=new Circular();                                         //创建了Circular的一个对象
    		System.out.println("circle的引用:"+circle);
    		System.out.println("圆锥的bottom的引用:"+circular.bottom);
    		circular.setHeight(5);                                                           //circular对象的高为5
    		circular.setBottom(circle);                                                   //将circle对象的引用传递给circular对象的bottom,原本的bottom为null
    		System.out.println("circle的引用:"+circle);
    		System.out.println("圆锥的bottom的引用:"+circular.bottom);
    		System.out.println("圆锥的体积:"+circular.getVolme());
    		System.out.println("修改circle的半径,bottom的半径同样变化");
    		circle.setRadius(20);
    	    System.out.println("bottom的半径:"+circular.getBottomRadius());
    		System.out.println("重新创建circle,circle的引用将发生变化");
    		circle=new Circle();
    		System.out.println("circle的引用:"+circle);
    		System.out.println("但是不影响circular的bottom的引用");
    		System.out.println("圆锥的bottom的引用:"+circular.bottom);
    	}
    }
    
    
    • 问题3解决方法:注释如上↑

    查阅博客得知
    对象的组合

    1. 关联关系:如果A类中的成员变量是用B类声明的对象,那么A和B的关系是关联关系,称A类的对象关联于B类的对象或A类的对象组合了B类的对象。
    2. 依赖关系:如果A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类对象,那么A和B的关系是依赖关系,称A依赖于B。

    考试错题总结:

    1. 表达式-2>>1的值为:-1。“>>”为带符号右移
    2. 表达式-2>>>1的值为:2^31-1。“>>>”为无符号右移
    3. while(i-->0)会对i的值产生影响
    4. y=x++:表示先赋值,然后加一;y=++X;表示先加一然后赋值。
    5. byte为一个字节,占8个bit位。
    6. char类型不可以使用双引号;不可以将多个字符赋给char型变量;u前缀表示时,必须为十六进制。
    7. 复制数组的方法有:用循环语句逐个复制数组元素;用arraycopy()方法;用clone方法。
    8. java字符串:"""" "Oxzabc" " "
    9. boolean 只能定义true或者false。

    博客学习(侵删)

    • Linux下为UTF-8编码,Windows下为GBK编码,Linux中javac编译gbk编码的java文件时,容易出现“错误: 编码UTF8的不可映射字符”。现在可以用命令javac -encoding gbk *.java编译成功。

    • 成员变量可细分为实例变量和类变量,在声明成员变量时用关键词static给予修饰的称作类变量,否则称为实例变量。

    1. 不同对象的实例变量互不相同(占不同内存)
    2. 所有对象共享类变量(占相同内存)
    3. 通过类名直接访问类变量
    • 方法也可分为实例方法和类方法(静态方法)
    1. 对象调用实例方法(实例方法的入口地址被所有对象共享),不能被类名调用
    2. 类名调用类方法(不可以操作实例变量)
    3. 设计类方法的原则:不必创建对象就可以用类名直接调用它

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 203/203 4/4 15/15
    第二周 326/529 2/6 12/27
    第三周 1000/1500 2/8 20/47

    参考资料

  • 相关阅读:
    [学习笔记]Senparc.CO2NET 缓存使用笔记
    [解决方案]Senparc.CO2NET 初始编译报错的问题
    [解决方案]NuGet打包报错: 'X' already has a dependency defined for 'Y'
    [经验分享]Windows系统下生成IOS证书
    struct redisServer’ has no member named ‘maxmemory’
    事务提交后执行异步方法
    restTemplate 401 Unauthorized: [no body]
    flyway不创建表
    启动kinaba并在后台运行
    springboot admin邮件报警
  • 原文地址:https://www.cnblogs.com/20165324hcj/p/8595232.html
Copyright © 2020-2023  润新知