Java基础课程概述【笔记】

Java基础课程概述

第一部分:编程语言核心结构
主要知识点:变量、基本语法、分支、循环、数组、 …
第二部分: Java面向对象的核心逻辑
主要知识点: OOP、封装、继承、多态、接口、 …
第三部分:开发Java SE高级应用程序
主要知识点:异常、集合、 I/O、多线程、反射机制、 网络编程、 ……
第四部分:实训项目
项目一:家庭收支记账软件
项目二:客户信息管理软件
项目三:开发团队人员调度软件
附加项目一:银行业务管理软件
附件项目二:单机考试管理软件

1.java中的数据类型:数据的单位

基本数据类型:程序里面自带的数据类型
布尔类型:boolean *true/false
字符类型:char    *: Unciode编码 -》 不区分中英文
		统一的都是2个字节 = 16个位
		取值范围:0-65535
		char x = 'a';
		char y = '男';
		char z = 55;//范围:0-65535
整数类型:byte short int long -> int*  
浮点类型:float double -> 小数  double*

	重点:boolean  char  int/long double
	boolean -> 判断
	char -> 一个字、一个字母
	int/long -> 整数
	double -> 小数

2.基本数据类型之间的转换:

取值范围:小 -》 大
      char
byte  short  int  long  float  double
小的变大的 直接转变
	int x = 45;
	double y = x;
大的变小的 需要强转:
	double x = 45.5;
	int y = (int)x;

3.引用数据类型 程序员自己开发的数据类型

main:
创建对象:
Student stu = new Student();
对属性赋值:
stu.name = "张三";
stu.gender = '男';
stu.stuId = 12345;
stu.study();//学习
//char x = stu.showGender();
System.out.println(stu.showGender());

main:
Student stu = new Student();
System.out.println(stu.name.length());

class Student{
	String name;//null
	char gender;// 
	int stuId;//0
	
	public void study(){
		System.out.println("学习");
	}
	public char showGender(){
		int x = 45;
		return gender;
	}
}

4.java中的变量:

分类:
成员变量 属性 实例变量:定义在类体里面
局部变量 自动变量:定义在方法体里面

区别:
1:定义的位置不同
2:作用范围不同
	成员变量:依赖于对象存在
	Student stu = new Student();//name gender stuId创建
	局部变量:依赖于方法存在
	stu.XXX();里面的局部变量创建
3:默认值不同:
	成员变量:即使不赋值 也有默认值
	局部变量:没有默认值 要求在使用之前必须先赋值

5.java中的分支/判断:

if else:*****

	if(boolean判断){
		执行语句;
	}else if(boolean判断){
		执行语句;
	}else if(boolean判断){
		执行语句;
	}

	if(x % 2 == 0){
		return "偶数";
	}else{
		return "奇数";
	}
	-if(x % 2 == 0)
		return "偶数";
	return "奇数";

	if(x % 2 == 0){
		return true;
	}else{
		return false;
	}	
	->
	return x % 2 == 0;
	
	只要两个学生的姓名一样就是为相等对象
	public boolean equals(Object obj){
		if(obj == null)return false;
		if(!(obj instanceof Student))return false;
		if(obj == this)return true;

		return this.name.equals(((Student)obj).name));	
	}
	

=====================================
switch case:
	switch(参数){
		case XX : 执行语句;
		case YY : 执行语句;
		default : 执行语句;
	}

	参数只能传某几种数据类型:
		jdk1.0 char byte short int
		jdk5.0 enum
		jdk7.0 String
	
	System.out.println("请选择A/B/C/D");
	Scanner sc = new Scanner(System.in);
	String ABCD = sc.next();
	
	switch(ABCD){
		case "A" : 语法操作1;break;
		case "B" : 语法操作1;break;
		case "C" : 语法操作1;break;
		case "D" : 语法操作1;break;
		default : 语法操作1;
	}

6.java中的循环:

for:
	for(变量初始化;循环条件;循环之后的变化){
				循环执行的代码
	}
	for(int x = 1;x <= 100;x++){
		if(x % 8 == 0){
			System.out.println(x);
		}
	}
while:
	变量初始化;
	while(循环条件){
		执行语句;
		循环之后的变化;
	}
	int x = 1;
	while(x <= 100){
		if(x % 8 == 0){
			System.out.println(x);
		}
		x++;
	}

do while:
	int x = 1;
	do{
		if(x % 8 == 0){
			System.out.println(x);
		}
		x++;
	}while(x <= 100);

7.数组:

基本概念:数组是容器 装元素 类型相同 存储空间连续

int[] data = new int[5];//0 0 0 0 0
int[] data = new int[]{45,77,82,19,90};
int[] data = {56,77,28,99};

得到某一个元素:data[下标]0开始
得到数组大小:data.length
	     str.length()
	     list.size()
遍历数组:
for(int x = 0;x < data.length - 1;x++){
	System.out.println(data[x]);
}

for(int x : data){
	System.out.println(x);
}

数组的复制1int[] data = {56,77,28,99};
往数组里面添加元素:
int[] temp = new int[data.length+1];//0 0 0 0 0 0
System.arraycopy(data,0,temp,0,4);//56 77 28 99 0
temp[temp.length - 1] = 66;
data = temp;

数组的复制2int[] data = {44,55,66,77,88};
data = Arrays.copyOf(data,data.length+1);

数组排序:
自动排序:Arrays.sort(数组对象);
          只能升序   import java.util.*;

手动排序 冒泡排序:
	int[] data = {56,88,37,40,99};

	for(int x = 0;x < data.length - 1;x++){//次数
		for(int y = 0;y < data.length - 1;y++){//下标
			if(data[y] > daya[y + 1]){
				int z = data[y];
				data[y] = data[y + 1];
				data[y + 1] = z;
			}
		}
	}

8.封装:用private修饰属性和方法

main:
Student stu = new Student();
//stu.name = "";
stu.setName("张三");
System.out.println(stu.getName());

class Student{
	private String name;
	//setter方法修改值
	public void setName(String name){
		this.name = name;
	}

	//getter方法得到值:
	public String getName(){
		return name;
	}
}

9.继承:用extends实现两个类之间的is a的关系

共享代码
class Person{
	String name;
	int age;
	char gender;
}

class Student extends Person{}

10多态:一个对象总有不同的类型去定义它

1:创建对象
       Person x = new Student();

2:放在参数里面解耦
   public void wc(Student stu){XXX}
   public void wc(Teacher tea){XXX}
   public void wc(Doctor x){XXX}

   ->
   public void wc(Person x){}

   -> Object类里面有一个方法判断两个对象能不能视为相等对象
      1.equals(Object obj)

11.方法重载 Overload:

条件?
是否发生在同一个类体中
方法名是否一模一样
参数是否不同【类型不同 个数不同 顺序不同】

String:
substring(int 下标):该下标截取到最后
substring(int x,int y):从下标x截取到下标y-1

ArrayList:
remove(int 下标);
remove(Object 元素)

作用
同时满足用户的不同需求

12方法覆盖 Override

条件?
子类在继承得到父类的某些方法之后 不满意 在子类里面重新实现一下

子类权限 >= 父类权限
返回类型
	jdk5.0之前 一模一样
	jdk5.0开始 斜变返回类型
方法签名		一模一样
异常	<= 父类的异常

父类:
protected Object clone(){XXX}
子类:
public Object/Object子类 clone(){}

13.构造方法

每个类都有构造方法 我们不写 系统提供一个默认构造方法
//Student stu = new Student();

Student stu = new Student("张三"34);
stu.setAge(45);

class Student{
	String name;
	int age;
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	//public Student(){}
}

构造方法的首行:
super():表示要执行本构造方法之前 先去执行父类的构造方法
class Father{
	String name;
	int age;
	public Father(String name,int age){
		this.name = name;
		this.age = age;
	}

	public void showDay(){
		System.out.println("吃饭");
		System.out.println("看电视");
		System.out.println("砍树");
	}
}

class Son extends Father{
	//name  age
	int stuId;
	
	public Son(String name,int age,int stuId){
		super(name,age);//只能放在构造方法的首行 共享父类构造方法的代码
		this.stuId = stuId;
	}
	
	@Override
	public void showDay(){
		super.showDay();//放在普通方法里面任何一行 共享父类普通方法的代码
		System.out.println("打游戏");

	}
}

this():要执行本构造方法之前 先去执行本类的其他的构造方法
class Student{
	String name;
	int age;
	int stuId;//成员变量
	
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public Student(String name,int age,int stuId){
		this(name,age);//放在构造方法首行 共享本类其他构造方法的代码
		this.stuId = stuId;
	}

	public void show(){
		int stuId = 12345;//局部变量
		System.out.println(stuId);
		//this.表示当前调用该方法的对象 没有位置限制
		System.out.println(this.stuId);
	}
}

Java基础课程体系

第1章 Java语言概述
第2章 基本语法
第3章 数组
第4章 面向对象编程(上)
第5章 面向对象编程(中)
第6章 面向对象编程(下)
第7章 异常处理
第8章 枚举类&注解
第9章 Java集合
 第10章 泛型
 第11章 IO流
 第12章 多线程
 第13章 Java常用类
 第14章 Java反射机制
 第15章 网络编程
 第16章 Lambda表达式与Stream API
 第17章 Java 9 & 10 & 11新特性在这里插入图片描述

第1章 Java语言概述

软件开发
软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分
人机交互方式
 图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作。
 命令行方式(Command Line Interface CLI): 需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令
常用的DOS命令
dir : 列出当前目录下的文件以及文件夹
md : 创建目录
rd : 删除目录
cd : 进入指定目录
cd… : 退回到上一级目录
cd: 退回到根目录
del : 删除文件
exit : 退出 dos 命令行
 补充: echo javase>1.doc

是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。
 是一种面向Internet的编程语言。 Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。 这些Java程序被称为Java小程序(applet)。 applet使用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中。
 随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言,开发效率
在这里插入图片描述

Java技术体系平台

Java SE(Java Standard Edition)标准版
Java EE(Java Enterprise Edition)企业版
Java ME(Java Micro Edition)小型版
Java Card支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台

从Java的应用领域来分, Java语言的应用方向主要表现在以下几个方面:
• 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。 Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电
信、交通、电子商务等。
• Android平台应用: Android应用程序使用Java语言编写。 Android开发水平的高低,很大程度上取决于Java语言核心能力是否扎实。
• 大数据平台开发:各类框架有Hadoop, spark, storm, flink等,就这类技术生态圈来讲,还有各种中间件如flume, kafka, sqoop等等 ,这些框架以及工具大多数是用Java编写而成,但提供诸如Java, scala, Python, R等各种语言API供编程。
• 移动领域应用:主要表现在消费和嵌入式领域, 是指在各种小型设备上的应用,包括手机、 PDA、机顶盒、汽车通信设备等。

java之父James Gosling团队在开发”Green”项目时,发现C缺少垃圾回收系统,还有可移植的安全性、 分布程序设计和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。

主要特征

• Java语言是易学的。 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
• Java语言是强制面向对象的。 Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
• Java语言是分布式的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类
库,包括URL、 URLConnection、 Socket、 ServerSocket等。 Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
• Java语言是健壮的。 Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
Java语言是安全的。 Java通常被用在网络环境中,为此, Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
• Java语言是体系结构中立的。 Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
• Java语言是解释型的。 如前所述, Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统的解释器中运行。
• Java是性能略高的。 与那些解释型的高级脚本语言相比, Java的性能还是较优的。
• Java语言是原生支持多线程的。 在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建

1.4 Java语言运行机制及运行过程

特点一: 面向对象
两个基本概念:类、对象
三大特性:封装、继承、多态
特点二: 健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与
释放等),提供了一个相对安全的内存管理和访问机制
特点三: 跨平台性
跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。 “Write
once , Run Anywhere”
原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java
Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行
在这里插入图片描述
Java两种核心机制
Java虚拟机 (Java Virtal Machine)
垃圾收集机制 (Garbage Collection)

核心机制—垃圾回收

不再使用的内存空间应回收—— 垃圾回收。

  • 在C/C++等语言中,由程序员负责回收无用内存。
  • Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。

垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。

1.5 Java语言的环境搭建

明确什么是JDK, JRE
下载 JDK
安装 JDK
配置环境变量
path: windows系统执行命令时要搜寻的路径。
验证是否成功: javac java
选择合适的文本编辑器或 IDE 开发

JDK(Java Development Kit Java开发工具包)
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
 其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
JRE(Java Runtime Environment Java运行环境)
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

声明为public的类应与文件名一致,否知编译失败

public static void main(String[] args)

单行注释
格式: //注释文字
多行注释
格式: /* 注释文字 */
注:
对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
多行注释里面不允许有多行注释嵌套。

Java源文件以“java”为扩展名。源文件的基本组成部分是类(class), 如
本例中的HelloWorld类。
Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String[] args) {…}
Java语言严格区分大小写。
Java方法由一条条语句构成,每个语句以“;”结束。
大括号都是成对出现的, 缺一不可。
一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含
一个public类,则文件名必须按该类名命名。

猜你喜欢

转载自blog.csdn.net/weixin_42462804/article/details/106204213