01-java学习笔记01

1.面向对象

面向对象:三个特征:封装, 继承, 多态

类和对象的关系

类就是:对现实生活中的事物的描述。

对象:就是这类事物,实实在在存在个体。

 1 class Car
 2 {
 3      String color = "黄色";
 4      int num = 4;
 5
 6      void run()
 7      {
 8           System.out.println( color+ ".."+num );
 9      }
10 }
11
12 public class CarDemo
13 {
14      public static void main(String[] args)
15      {
16           Car c = new Car();
17           c.run();
18      }
19 }

堆和堆栈

1.堆栈。java系统必须知道存储在堆栈内的所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储于堆栈中——特别是对象引用,但是java对象并不存储于其中。

2.堆。一种通用的内存池,用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因此在堆里分配存储有很大灵活性。当需要一个对象时,只需用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性要付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间(如果在java中可以像C++中一样在栈中创建对象)。

2.成员变量和局部变量

1)作用范围不一样

成员变量作用于整个类中,

局部变量作用于函数中,或者语句中。

2) 在内存中的位置

成员变量在堆内存中,因为对象的建立才存在。

局部变量位于堆栈中。

3.匿名对象的应用

new Car();//匿名对象

Car c = new Car();
c.num = 5;

new Car().num = 5;
new Car().color = "blue" ;

//匿名对象调用属性没有意义

//匿名对象调用方法有意义

//匿名对象使用方式一:当对对象只调用一次时,可以用匿名对象来完成,这样写比较简化。

//如果对一个对象进行多个成员调用,必须给这个对象起个名字。

//匿名对象使用方式二:可以将匿名对象作为实际参数进行传递

main()
{
     //Car c = new Car ();
     //show(c);
     show(new Car());   //?强引用 软引用 弱引用 虚引用?
}
public static void show(Car c)
{
     c.num = 5;
     c.color = "yellow";
     c.run();
}

4.封装 (Encapsulation)

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:

将变化隔离。

便于使用。

提高重用性。

提高安全性。

封装原则:

将不需要对外提供的内容都隐藏起来。

把属性都隐藏,提供公共方法对其访问。

private :私有,权限修饰符:用于修饰类中的成员(成员变量, 成员函数)。

将age私有化以后,类以外即使建立了对象也不能直接访问。

但是人应该有年龄,就需要在Person类中提供对应访问age的方式。

注意:私有仅仅是封装的一种表现形式。

之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作。提高代码健壮性。

public class PersonDemo {
        public static void main(String[] args)
       {
              Person P = new Person();

               P.setAge(20);
               P.setAge(-20);
               P.setAge(140);
       }
}

class Person{
        private int age ;

        public void setAge(int a)
       {
               if(a <0||a >130)
                     System. out.println("error" );
               else
              {
                      age = a;
                     speak();
              }

       }

        public int getAge()
       {
               return age ;
       }
        void speak()
       {
              System. out.println("age=" + age );
       }
}
 

5.构造函数

特点:

1.函数名与类名相同

2.不用定义返回值类型

3.不可以写return语句

作用:
1.默认构造函数的特点

对象一建立就会调用与之对应的构造函数

构造函数的作用:可以用于给对象进行初始化

当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数(Person(){})

当定义了构造函数时,默认的构造函数就没有了。

构造函数与一般函数在写法上有不,同。

在运行上也有不同。

构造函数在对象一建立就运行。给对象初始化。

而一般方法是对象调用才执行,给对象添加对象具备的功能

一个对象建立,构造函数只运行一次

而一般方法可以被该对象调用多次

什么时候定义构造函数?

当分析事物时,该事物存在就具备一些特性或者行为,那么将这些内容定义在构造函数中。

class Person2
{
        private String name ;
        private int age ;
        //Person(){}
       Person2()
       {
            System. out.println("A: name" +name +"...age=" +age );
       }
       Person2(String n)
       {
            name = n;
            System. out.println("A: name" +name +"...age=" +age );;
       }
       Person2(String n, int a )
       {
            name = n;
            age = a;
            System. out.println("A: name" +name +"...age=" +age );;
       }
}

class PersonDemo2
{
     public static void main(String[] args)
     {
          Person2 p = new Person2 ();
          Person2 p1 = new Person2( "mike");
          Person2 p2 = new Person2( "mike2",99);
     }
}

6.构造代码块

作用:给对象进行初始化

对象一建立就运行,而且优先于构造函数执行。

和构造函数的区别:

给所有对象进行统一初始化

而构造函数是给对应的对象进行初始化

构造代码块中定义的是不同对象共性的初始化内容

class Person
{
     {
          System.out.printf(Person run);
     }
     private int age ;
}

7.this关键字

将参数与数据成员区分

this语句:用于构造函数之间进行相互调用。

只能调用一个

且只能定义在构造函数的最起始处

在构造器中调用构造器

时间: 2024-11-25 10:57:39

01-java学习笔记01的相关文章

java学习笔记01

java基础篇 基础中的基础 一.搭建开发环境:设置path变量 **(x:\...\bin;)** 和 classpath变量 **(.;)** ,.表示当前目录. 二. 码的第一句话:public static void main(String args[]) {}.main()方法,即程序入口. 三.关于注释: //单行注释 /*...*/多行注释 /**...*/文档注释 变量 一.Java的基本数据类型有4类8种: 整数型:byte,short,int,long 浮点型:float,d

【8-19】java学习笔记01

JDK API文档 java SE 8 API文档:http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-2133158.html jdk-8-apidocs  在线版: http://docs.oracle.com/javase/8/docs/api/index.html java SE 7 API文档: http://www.oracle.com/technetwork/java/java

【opengl 学习笔记01】HelloWorld示例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比较踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

HTTP 学习笔记01

HTTP   hypertext transfer protocol (超文本传输协议) TCP/IP 协议集中的一个应用层协议 用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 HTTP 1.0  会话方式 HTTP 1.1 方式 HTTP 请求消息结构 一个请求行,若干消息头,以及实体内容 其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. GET   方式下是没有实体内容的 POST .PUT.DELETE 方式下请求消息才可以包含实体内容 HT

SWIFT学习笔记01

1.Swift,用来判断option是不是nil,相当于OC的 if(option) if let name = option{ greeting = "if=====" }else{ greeting = "else===" } 2.运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break. 3.//使用..创建的范围不包含上界,如果想包含的话需要使用...,集合上,就是[)与[]的关系 for i

C++ GUI Qt4学习笔记01

C++ GUI Qt4学习笔记01 qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概念:一个是“信号和槽”,另一个是“布局”. 窗口部件(widget)是用户界面的一个可视化元素,相当于windows系统中的“控件”和“容器”.任意窗口部件都可以用作窗口. 1.1Hello Qt 正确安装Qt4开发环境,创建工程目录hello,源代码文件名为hello.cpp,进入hello目录 (1

HTML学习笔记01

HTML学习笔记 HTML学习笔记01 一.HTML的定义 1 HTML就是"HyperText Markup Language","超文本标记语言".2 HTML不是<color="red">编程语言,而是一种标记语言.3 标记语言是一套标记标签.4 HTML使用标记标签来描述网页. 二.HTML标签 1 HTML标签是由尖括号包围的关键词.2 HTML标签通常是成对出现的.3 标签对中的第一个标签是开始标签,第二个标签是结束标签.

MVC4 学习笔记01

1 . ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别是什么?要注意什么吗? ActionResult 是一个抽象(abstract)类,ViewResult 只是ActionResult 的一个实现(implementation).如果你确认你返回的是一个视图(view),你可以直接返回类型为ViewResult.ActionResult 有很多的派生类,如果你很确定你要返回的类型,你可以明确的返回该类型.如果你并不是很清楚,或者你根本不想去理解

python学习笔记(01):python和c语言 标识符命名规则比较

python标识符命名规则:标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’).标识符名称的其他部分可以由字母(大写或小写).下划线(‘ _ ’)或数字(0-9)组成.标识符名称是对大小写敏感的.例如,myname和myName不是一个标识符.注意前者中的小写n和后者中的大写N.有效 标识符名称的例子有i.__my_name.name_23和a1b2_c3.无效 标识符名称的例子有2things.this is spaced out和my-name. c语言标识符命

C++学习笔记——01

最近准备跳槽的事情,于是把C++翻出来看,顺便做了一些练习,主要是数据结构方面的,就贴在这里做个系列,权当督促自己了. 第一天,写了一个栈,调试了下没什么问题,内存泄露的问题也解决了. 1 #ifndef STACK_H 2 #define STACK_H 3 4 #include "stdlib.h" 5 #include "iostream" 6 7 class Stack 8 { 9 private: 10 typedef int NODE_DATA_TYPE