Java之路(OOP基础)

  • 学习java的起因
    大家在浏览了我以前的学习文章就大概知道学习总结主要是围绕无人驾驶相关介绍,当然其使用的语言多为python和c++等语言,之所以学习java,当然是都想学习学习罢了。

一、类与对象

  • 相信大家都听说过面向对象编程这种说法,也就不作过多的赘述,当然java也是一额面向对象的编程语言。如果你对与面向对象编程还不是很理解,我相信我的这个例子应该就很好懂了。

梅西是一个足球运动员,是一名足球运动员,拥有很多奖杯和荣誉

  • 好了,大家现在都知道我是一名梅西球迷了,哈哈哈。
  • 言归正传,首先我们知道梅西、C罗、内马尔、姆巴佩、大罗、小罗和鲁尼等球员是足球运动员这一个类,它是由一群属性相似的个体(对象)组成的一个类型组合。所以足球运动员是一个类,这当中有个实体名字叫梅西,梅西就是类的对象,梅西它有身高、体重、名字、善用的脚和带球技巧高等属性,这些就是对象的行为属性。我们就可以面向这些个体对象去定义函数类。
public class Player{
   
	public static void main(String[] args){
   
		private int height;
		private int weight;
		private String name;
	}
}

1、类

Java类的结构由类声明和类体组成,语法格式如下所示

		类声明
	{
   
		成员变量的声明;
		成员方法的声明和实现;
	}
  • 1、声明类
    声明类的语法格式如下:
	[修饰符] class<泛型> [extends父类] [inplements 接口类表]
必须要注意的是,Java约定名标识符首字母大写;
[修饰符]是一些说明类的属性关键字,如public访问权限、abstract抽象类、final最终类等;
<泛型>是类的类型参数,带参数的类称为泛型类,就像c++中的模板类;
  • 2、声明成员变量和成员方法
    我们在直接使用一个例子来演示声明过程:
	public class MyDate
	{
   
		int year,month,day;
		void set(int y,int m,int d)
		{
   
			year = y;
			month = m;
			day = d;
		}
	}
可以看到访问权限为公有,类外任何函数都能调用该类。
  • 3 成员方法重载
    在专业教材中提到类中的成员不能有二义性,也就是成员变量不能同名,但成员变量与成员方法可以同名,如MyDate类中可以声明year()方法返回年份。
    类中可以有多个同名的成员方法,前提是参数列表不同,称为类的成员方法重载,重载的多个方法为一种功能提供多种实现。重载方法之间必须以不同的参数列表(数据类型、数据个数、参数次序)来区别。
用一个我们日常使用的方法来解释重载的作用
	在函数中我们通常会调用System.out.println这个函数输出方法,
	当然在c++也会有printf或者python中的print等等这些也会使用。
	我们输出的类型,如intdoublefloat或者字符串、数组等各种不同的类型
	如果其不使用重载的方法,我们就要不断重写各种可能输出的方法,而且一旦写的不全就不能达到要求
	所有重载就直接讲其使用,改变参数或者顺序、个数等参数类型,从而实现该方法

2、对象

  • 1、对象声明
    与声明类变量语法格式相同,格式如下
	类	对象
	例如以下声明对象仅仅说明了对象所属的类,必须通过赋值才能使对象获得实例
	MyDate d1;			//声明d1是MyDate类的一个对象
  • 2、构造实例
    使用new运算符可调用类的一个构造方法,构建该类的一个实例,为实例分配内存空间并初始化,再将实例赋值给一个对象,语法格式如下:
	对象 = new 类的构造方法([参数列表])
例如:
	d1 = new MyDate();					//创建类MyDate的一个实例赋值给对象d1
	MyDate d1 = new MyDate();			//声明对象、创建实例并赋值
  • 3 引用对象的成员变量和调用成员方法
    对象获得一个实例后,就可以 使用点运算符 “.” 引用对象中的成员变量和调用成员方法,语法格式如下:
	对象.成员变量
	对象.成员方法([参数列表])
例如:
	d1.month = 10;
	d1.set(2012,1,1);
  • 4对象引用模型
    类、数组、接口等都是引用数据类型,一个对象引用一个实例,含义为对象保存该实例的引用信息,包括的内容有首地址、引用计数等。
    当然在这里延伸出来数据类型的介绍:
    Java数据类型
基本类型 1.整数类型——byte,short.int.long 2.浮点类型——float,double 3.字符型char 4.布尔型:boolean
引用类型 数组,类class和接口interface
	MyDate d1;					//声明对象
	d1 = new MyDate();			//声明对象,调用默认构造方法,创建实例并引用,实例默认初始化
	d1.set(2021,4,19);			//对象调用类的成员方法
	MyDate d2 = d1;			//对象引用赋值
	d2.month = 10;				//修改d2实例的成员变量值,影响d1
	d2 = new MyDate();			//d2引用新创建实例
	d2.set(d1);					//设置d2对象值同d1实例,改变d2对象值,不影响d1对象
	d1 = null;					//不再引用实例

上面的例子干了个什么事儿呢?其实整体就是:

  • 前三行是对d1进行声明和赋值(通过调用成员方法)
  • 第四行中对象引用赋值,就是将d2对象指向d1对象,并没有为d2创建新的空间,我们是直接用了d1的值。
  • 第五行修改d2的值改变了d1的值原因也就是我们所说的d2和d1都是一个东西,相当于一个人有两个名字
  • 后面就是为d2创建一个新的空间,它有了自己的房子,再也不用蹭别人的房间了。

3、语言成分

现在为大家简单梳理一下Java中的语言成分:

1.标识符和关键字

  • 1.关键字:
    public、class、static、void等都是关键字,我们在对变量定义名称时,因为Java已经给它赋予了其它使命,我们不能用关键字命名我们的变量,例如

     int static;				//肯定错,不能使用
    
  • 2.标识符
    标识符就是我们定义的对象名称的单词了,当然用于命名变量、常量、类、对象、方法等。

    标识符的命名规则是以字母开头的字母数字序列,数字指0-9,字母指大小写英文字母、下划线_、和符号$;区分大小写;不能使用关键字;长度不受限制。
    在Java中有一些约定的规则:1、关键字、对象、变量、方法和包等通常全部小写字母;2、有多个单词组成的标识符,首字母小写,其后字母大写:toString、getName等;3、类名的首字母大写 4、常理名全部字母大写。

  • 3分隔符和注释
    分隔符也就( )空格(;)分号和(,)逗号等,关键字、标识符的分隔符是空格,语句的分隔符是分号,数据的分隔符是逗号。
    注释就是在这个符号之后的代码,不会加入程序的逻辑运行中,计算机会跳过这一段代码。而这段代码只是为了便于程序猿阅读。其分为:

    // 单行注释,注释号后面一行为注释
    /*
    */ 多行注释,两个符号之间的内容为注释,也包括两个符号所在的那两行。
    / ** 文档注释,用于从源代码自动生成文档
    */

2、运算符与表达式

  • 1运算符
    (1)算术运算符
单目运算符 双目运算符
+正号 +加号
- 符号 -减号
++自增 *乘
–自减 /除
%取余

(2)关系运算符
==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于),基本的数据类型也可以参与运算,只是最终的结果是布尔类型。

‘a' <'A'				//结果是false

(3)位运算符
位运算符是对整数按二进制的位进行运算,用于整数类型和字符类型,共有七个:

~(非)、&(与)、|(或)、^(异或)、<<(左移位)、>>(右移位)、>>>(无符号右移位)。
其中 ~为单目运算符,其余为双目运算符。

(4)逻辑运算符
逻辑运算是指对布尔类型进行的与或非、异或等运算的符号,其结果是布尔类型。逻辑运算符共有六个:

&(与)、|(或)、!(非)、^(异或)、&&(条件与)、||(条件或)
其中!是单目,其余都是双目

(5)其它运算符
例如赋值运算符“=”、 类型强制转换符“()”、 条件运算符“?:” 、 括号运算符“()”、字符串连接运算符“+”、点运算符“.”等等

  • 2控制流程语句
    相信想要入门任何一门语言,知道其控制语句是必不可少的,在此不作过多赘述,权当是大家对控制语句的复习。

顺序结构语句:赋值语句、空语句、复合语句
选择语句:if 、switch
循环语句:while、do-while、for
转移语句:break、continue、return

具体的方法就不多说,想要学习,附上别人优秀的文章嗨,我在这里

好了,话不多说,期待我们下次再见,我也在java这条路上,准备一去不复返,主要是想早点出去工作。虽然不知道未来的路究竟如何,但是,路漫漫其修远兮,不必为了现在的浮躁打乱我们的计划。
人间道,大梦一场。