赞
踩
java的核心思想就是OOP
面向过程&面向对象
面向过程思想:
面向对象思想:
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
面向对象编程(Object-Oriented Programming,OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的形式组织(封装)数据
三大特性:封装、继承、多态
package com.oop.demo01; //Demo01类 public class Demo01 { //main方法 public static void main(String[] args) { } /* 修饰符 返回值 方法名(...){ //方法体 return 返回值 } */ //return 结束方法,返回一个结果! public String sayHello(){ return "Hello,world"; } public void print(){ return; } public int max(int a,int b){ return a > b ? a : b;//三元运算符 } }
package com.oop.demo01;
public class Demo02 {
public static void main(String[] args) {
//实例化这个类new
//对象类型 对象名 = 对象值
Student student = new Student();
//调用
student.say();
}
}
package com.oop.demo01;
//学生类
public class Student {
//非静态方法
public void say(){
System.out.println("学生说话了");
}
}
package com.oop.demo01;
public class Demo03 {
public static void main(String[] args) {
//实际参数和形式参数的类型要对应
int add = Demo03.add(1,2);
System.out.println(add);
}
public static int add(int a, int b){
return a + b;
}
}
package com.oop.demo01;
//值传递
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);//1
Demo04.change(a);
System.out.println(a);//1
}
//返回值为空
public static void change(int a){
a = 10;
}
}
package com.oop.demo01; //引用传递:对象,本质还是值传递 public class Demo05 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name);//null Demo05.change(person); System.out.println(person.name);//阿波 } public static void change(Person person){ //person是一个对象:指向的--->Person person = new Person();这是一个具体的人,可以改变属性! person.name = "阿波"; } } //定义了一个Person类,有一个属性:name class Person{ String name;//默认值为null }
java中一共有三大变量:局部变量、实例变量(对象级别)、静态变量(类级别)
局部变量存储在栈(stack)
实例变量存储在堆内存
静态变量存储在方法区
类是一种抽象的数据类型,它是对某一类事物的整体描述/定义,但是并不能代表某一个具体的事物
对象是抽象概念的具体实例
对象的创建和使用:
类是一个模板,通过一个类,是可以创建N多个对象的
new是一个运算符,专门负责对象的创建
//例:
XueSheng s1 = new XueSheng();
S1是变量名(局部变量),XueSheng是变量s1的数据类型(引用数据类型),XueSheng()是一个对象(学生类创建出来的学生对象)
package com.oop.demo02; //使用new关键字创建对象 //一个项目应该只有一个main方法 public class Application { public static void main(String[] args) { //类,抽象的,实例化 //类实例化后会返回一个Student类的具体实例 //student对象就是一个Student类的具体实例 Student xiaoming = new Student(); Student xiaohong = new Student(); xiaoming.name = "小明"; xiaoming.age = 3; System.out.println(xiaoming.name); System.out.println(xiaoming.age); xiaohong.name = "小红"; xiaohong.age = 3; System.out.println(xiaohong.name); System.out.println(xiaohong.age); } }
package com.oop.demo02;
//学生类
public class Student {
//属性:字段
String name;//默认值为null
int age;//默认值为0
//方法
public void study(){
System.out.println(this.name + "在学习");
}
}
使用new创建对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
package com.oop.demo02;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person();
System.out.println(person.name);//阿波
Person person1 = new Person("波波");
System.out.println(person1.name);//波波
}
}
package com.oop.demo02; public class Person { //一个类即使什么都不写,他也会存在一个构造方法 String name; //显示的定义构造器 //无参构造 //实例化初始值,使用new关键字本质上是在调用构造器 public Person(){ this.name = "阿波"; } //有参构造,一旦定义了有参构造,无参构造必须显示定义 public Person(String name){ this.name = name; } } /* 1.快捷键:Alt + insert会弹出一个小窗口 2.选择Constructor,勾选参数再点0k即可 3.若要选择无参,选择Constructor后点select none */
构造方法的作用:
创建对象
给属性赋值
注意:
构造方法支持重载
当一个类没有提供任何构造方法的时候,系统会默认提供一个无参数的构造方法(这个方法被称为缺省构造器)
手动定义有参的构造方法,无参数构造方法将消失(保险一些建议将无参数的构造方法手写出来)
构造方法中没有手动赋值,统一都会默认赋值,默认赋系统值
空引用访问对象相关的数据时,会出现空指针异常(NullPointerException)
Public class NullPointerTest{ Public static void main(String[] args){ //创建客户对象 Customer c = new Customer(); //访问这个客户的id System.out.println(c.id);//0 //重新给id赋值 c.id = 9527; System.out.println(“客户的id是” + c.id); c = null; // NullPointerException //编译没问题,因为编译器只检查语法 //但是运行的时候需要对象的存在,但是对象没了(null) //就只能出现异常 System.out.println(c.id); } } Class Customer{ int id; }
static(静态的)关键字
所有static关键字修饰的都是类相关的,类级别的
都采用类名.的方式访问
Static修饰的变量:静态变量
Static修饰的方法:静态方法
//静态代码块语法:
Static{
Java语句;
Java语句;
}
//特点:静态代码块在类加载时执行,并且只执行一次
//作用:记录类加载的日志信息
Public class Test{ //静态代码块 Static{ System.out.println(“A”); } //一个类当中可以编写多个静态代码块 Static{ System.out.println(“B”); } //入口 Public static void main(String[] args){ System.out.println(“Hello World!”); } Static{ System.out.println(“C”); } } //运行结果:A,B,C,Hell World! //注意:静态代码块在main方法执行之前执行
//实例语句块
//语法:
{
Java语句;
Java语句;
}
//只要是构造方法执行,必然在构造方法执行之前,自动执行“实例语句块”中的代码
一个对象一个this,this存储在堆内存当中对象的内部
this是一个变量,一个引用,this保存当前对象的内存地址,指向自身
this不能使用在静态方法中,this只能使用在实例方法中,谁调用这个实例方法,this就是谁,所以this代表的是:当前对象
大部分情况下this可以省略
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。