【每日一学】零基础起航:JavaSE面向对象编程入门指南!

createh53周前 (02-22)技术教程16

面向对象基础-入门篇

学习总目标

本文学习目标



1 面向对象编程

1.1 面向对象编程思想概述

1、编程语言概述

Java是一种计算机程序设计语言。所有的计算机程序一直都是围绕着两件事在进行的,程序设计就是用某种语言编写代码来完成这两件事,所以程序设计语言又称为编程语言(编写程序的语言)。

1.如何表示和存储数据

–基本数据类型的常量和变量:表示和存储一个个独立的数据

–对象:表示和存储与某个具体事物相关的多个数据(例如:某个学生的姓名、年龄、联系方式等)

–数据结构:表示和存储一组对象,数据结构有数组、链表、栈、队列、散列表、二叉树、堆……

2.基于这些数据都有什么操作行为,其实就是实现什么功能

–数据的输入和输出

–基于一个或两个数据的操作:赋值运算、算术运算、比较运算、逻辑运算等

–基于一组数据的操作:统计分析、查找最大值、查找元素、排序、遍历等

2、程序设计方法

C语言是一种面向过程的程序设计语言,因为C语言是在面向过程思想的指引下去设计、开发计算机程序的。

Java语言是一种面向对象的程序设计语言,因为Java语言是在面向对象思想的指引下去设计、开发计算机程序的。

其中面向对象和面向过程都是一种编程思想,基于不同的思想会产生不同的程序设计方法。

1.面向过程的程序设计思想(Process-Oriented Programming),简称POP

–关注的焦点是过程:过程就是操作数据的步骤,如果某个过程的实现代码在很多地方重复出现,那么就可以把这个过程抽象为一个函数,这样就可以大大简化冗余代码,也便于维护。

–代码结构:以函数为组织单位。独立于函数之外的数据称为全局数据,在函数内部的称为局部数据。

2.面向对象的程序设计思想( Object Oriented Programming),简称OOP

–关注的焦点是类:面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,用类来表示。某个事物的一个具体个体称为实例或对象。

–代码结构:以类为组织单位。每种事物都具备自己的属性(即表示和存储数据,在类中用成员变量表示)和行为/功能(即操作数据,在类中用成员方法表示)。

1.2 类和对象

1、什么是类

是一类具有相同特性的事物的抽象描述,是一组相关属性行为的集合。

?属性:就是该事物的状态信息。

?行为:就是在你这个程序中,该状态信息要做什么操作,或者基于事物的状态能做什么。

2、什么是对象

对象是一类事物的一个具体个体(对象并不是找个女朋友)。即对象是类的一个实例,必然具备该类事物的属性和行为。

例如:做一个养宠物的小游戏

类:人、猫、狗等

public class Dog{
String type;
//种类
String nickname;
//昵称
int energy;
//能量
final int MAX_ENERGY = 10000;

//吃东西
void eat(){
if(energy < MAX_ENERGY){
energy += 10;
}
}
}

public class Person{
String name;
char gender;
Dog dog;

//喂宠物
void feed(){
dog.eat();
}
}

public class Game{
public static void main(String[] args){
Person p = new Person();
p.name = "张三";
p.gender = '';
p.dog = new Dog();

p.dog.type = "哈巴狗";
p.dog.nickname = "小白";

for(int i=1; i<=5; i++){
p.feed();
}

System.out.println(p.dog.energy);
}
}

3、类与对象的关系

?类是对一类事物的描述,是抽象的

?对象是一类事物的实例,是具体的

?类是对象的模板,对象是类的实体

1.3 如何定义类

1、类的定义格式

关键字:class(小写)

【修饰符】 class 类名{

}

类的定义格式举例:

public class Student{

}

2、对象的创建

关键字:new

new 类名()//也称为匿名对象

//给创建的对象命名
//或者说,把创建的对象用一个引用数据类型的变量保存起来,这样就可以反复使用这个对象了
类名 对象名 = new 类名();

那么,对象名中存储的是什么呢?答:对象地址

public class TestStudent{
public static void main(String[] args){
System.out.println(new Student());
//Student@7852e922

Student stu = new Student();
System.out.println(stu);
//Student@4e25154f

int[] arr = new int[5];
System.out.println(arr);
//[I@70dea4e
}
}

发现学生对象和数组对象类似,直接打印对象名和数组名都是显示“类型@对象的hashCode值“,所以说类、数组都是引用数据类型,引用数据类型的变量中存储的是对象的地址,或者说指向堆中对象的首地址。

那么像“Student@4e25154f”是对象的地址吗?不是,因为Java是对程序员隐藏内存地址的,不暴露内存地址信息,所以打印对象时不直接显示内存地址,而是JVM帮你调用了对象的toString方法,将对象的基本信息转换为字符串并返回,默认toString方法返回的是“对象的运行时类型@对象的hashCode值的十六进制值”,程序员可以自己改写toString方法的代码(后面会讲如何改写)。


2 包(Package)

2.1 包的作用

(1)可以避免类重名:有了包之后,类的全名称就变为:包.类名

(2)可以控制某些类型或成员的可见范围

如果某个类型或者成员的权限修饰缺省的话,那么就仅限于本包使用。

(3)分类组织管理众多的类

例如:

?java.lang—-包含一些Java语言的核心类,如String、Math、Integer、 System和Thread等,提供常用功能

?java.net—-包含执行与网络相关的操作的类和接口。

?java.io —-包含能提供多种输入/输出功能的类。

?java.util—-包含一些实用工具类,如集合框架类、日期时间、数组工具类Arrays,文本扫描仪Scanner,随机值产生工具Random。

?java.text—-包含了一些java格式化相关的类

?java.sql和javax.sql—-包含了java进行JDBC数据库编程的相关类/接口

?java.awt和java.swing—-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

2.2 如何声明包

关键字:package

package 包名;

注意:

(1)必须在源文件的代码首行

(2)一个源文件只能有一个声明包的package语句

包的命名规范和习惯:(1)所有单词都小写,每一个单词之间使用.分割 (2)习惯用公司的域名倒置开头

例如:com.atguigu.xxx;

建议大家取包名时不要使用“java.xx”包

2.3 如何跨包使用类

==注意:==只有public的类才能被跨包使用

(1)使用类型的全名称

例如:java.util.Scanner input = new java.util.Scanner(System.in);

(2)使用import 语句之后,代码中使用简名称

import语句告诉编译器到哪里去寻找类。

import语句的语法格式:

import .类名;
import .*;

注意:

使用java.lang包下的类,不需要import语句,就直接可以使用简名称

import语句必须在package下面,class的上面

当使用两个不同包的同名类时,例如:java.util.Date和java.sql.Date。一个使用全名称,一个使用简名称

示例代码:

package com.atguigu.test02.pkg;

import com.atguigu.test01.oop.Student;

import java.util.Date;
import java.util.Scanner;

public class TestPackage {
public static void main(String[] args) {
/* java.util.Scanner input = new java.util.Scanner(System.in);
com.atguigu.test01.oop.Student stu = new com.atguigu.test01.oop.Student();*/

Scanner input = new Scanner(System.in);
Student student = new Student();

Date d1 = new Date();
java.sql.Date d2 = new java.sql.Date(0);
}
}

相关文章

Java SE疯狂涨价!甲骨文改按公司人头收费,用不用Java都要交钱

鱼羊 发自 凹非寺量子位 | 公众号 QbitAI还在用Java SE(标准版)的盆友们注意了:甲骨文已经悄咪咪大涨价了。从1月23日起,订阅Java SE不再按用户数量收费,而是改为按公司员工人数收...

用大白话聊聊JavaSE —— 如何理解Java Bean(一)

首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件。这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专...

JAVASE:注解与反射笔记_javaee注解

JavaSE:注解与反射(Annotation & Reflection) 注解和框架是所有框架的底层,如Mybatis,spring。框架的底层实现机制就是注解和反射。注解相比于注释,除了能较为直接...

Java企业级开发全系列-JavaSE-1-Java简介

Java是一门以面向对象为核心编程思想的高级程序设计语言,它借鉴了C++语言的优点,同时摒弃了C++中复杂的多继承、指针等概念。Java语言功能强大且简单易用。一、java背景在20世纪90年代,硬件...

Error: Registry key &#39;Software\JavaSoft\Java Runtime Environment&#39;

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'has value '1.8', but...