java期末突击

news2024/11/24 16:10:35

目录

1. 快速入门

2. 类

3. 成员方法

 4. 构造器

5. 单例模式

6. 继承

7. 抽象类

8. 多线程(Thread与Runnable)


1. 快速入门

public class Hello                
{
    public static void main(String[] args)
    {
        System.out.println("Hello,World");
    }
}



1."public class Hello" 是一个公有的类,类名是Hello,类名与文件名必须保持一致
2."public static void main(String[] args)" 类似C++中的"int main()",主函数,是程序的入口,内部编写程序主体

2. 类

(1)java的类等同于C++中的结构体,先定义一个类,再用这个类去创建变量

// 定义一个猫类

class Cat
{
    String name;          // 名字
    int age;              // 年龄
    String color;         // 颜色
    String[ ] master;     // 字符串数组类型 
}



// 用这个类去创建变量

Cat cat1 = new Cat();

// new Cat() --> 创建一只猫
// Cat cat1 --> 用cat1这个变量来接收,Cat是数据类型。类比结构体创建变量

(2)类的使用

Cat cat1 = new Cat();
cat1.name = "小白";
cat1.age = 10;
cat1.color = "白色";

Cat cat2 = new Cat();
cat2.name = "小红";
cat2.age = 20;
cat2.color = "红色";

3. 成员方法

(1)相当于C++中的函数,但由于java是面向对象的语言,因此方法是在成员里面的,通过调用成员来调用方法,故称之为成员方法。

(2)方法的定义

class Person
{
    String name;
    int age;
    public void speak()
    {
        System.out.println("我是一个好人");
    }
    public void tot1()
	{
		int s=0;
		for (int i=1;i<=10;i++)
			s+=i;
		System.out.println(s);
	}
    public void tot2(int n)
	{
		int s=0;
		for (int i=1;i<=n;i++)
			s+=i;
		System.out.println(s);
	}
}

(3)方法的使用

public class Method1
{
    public static void main(String[] args)
    {
        Person p = new Person();
        p.speak();
        p.tot1();
        p.tot2(5);
    }
}

 (4)有返回值的方法

public class Method2
{
    public static void main(String[] args)
    {
        Person p = new Person();
        int ans = p.tot(10,20);
        System.out.println(ans);
    }
}

class person
{
    public int tot(int a,int b)
    {
        return a+b;
    }
}

 4. 构造器

(1) 介绍

前面在创建一个猫变量时,是先将变量创建好后再给他的姓名年龄属性赋值。使用构造器可以在创建猫这个对象时直接指定其属性。

(2)注意点

· 修饰符可以是public,protected,private

· 构造器没有返回值,也不能加"void"

· 构造器的名字需和类名一致

(3)使用

public class Construct {
	public static void main(String[] args)
	{
		Person1 p = new Person1("张三",10);
		System.out.println(p.name+" "+p.age);
	}
}

class Person1
{
	String name;
	int age;
	public Person1(String pname,int page)            // 形参列表,由主方法传入
	{
		name = pname;                                // 初始化变量的属性值
		age = page;
	}
}

5. 单例模式

一. 饿汉式(不论是否需要用到这个变量,都会去创建)

(1)步骤

· 构造器私有化。防止直接new一个对象

· 在类的内部创建对象

· 向外暴露一个静态的方法

(2)实现

public class Single {
	public static void main(String[] args)
	{
		Girlfriend gf = Girlfriend.getInstance();
		System.out.println(gf.name);
	}
}

class Girlfriend
{
    private String name;
	
	private static Girlfriend gf = new Girlfriend("小红");            // 必须加上静态"static",与下面公有化的"static"相对应
	
	private Girlfriend(String name)
	{
		this.name = name;
	}
	
	public static Girlfriend getInstance()             // 向外暴露静态
	{
		return gf;
	}
}

二. 懒汉式(需要用到这个变量时才去创建)

public class Single2 {
	public static void main(String[] args)
	{
		Girlfriend gf = Girlfriend.getInstance();
		System.out.println(gf.name);
	}
}

class Girlfriend2
{
	public String name;
	
	private static Girlfriend2 gf;                     // 声明变量名,但不去创建
	
	private Girlfriend2(String name)
	{
		this.name = name;
	}
	
	public static Girlfriend2 getInstance()
	{
		if (gf == null)                                // 多一条判断,该变量是否已经创建过
			gf = new Girlfriend2("小红");
		return gf;
	}
}

6. 继承

(1)作用

当不同类之间有大量重复的成员变量和方法时,设置一个父类,包含所有类共同的部分,所有类作为子类继承父类,已经拥有共同部分,只需再添加自己特有的部分即可。

(2)实现

class Student {                                // 父类
	public String name;
	public int age;
	private double score;
	
	public void setScore(int score)
	{
		this.score = score;
	}
	
	public void Show()
	{
		System.out.println("学生名 " + name + " 年龄 " + age + " 成绩 " + score);
	}
}

class Pupil extends Student                    // 子类1:小学生
{
	public void testing()
	{
		System.out.println("小学生 " + name + " 正在上课");
	}
}

class Gra extends Student                      // 子类2:大学生
{
	public void testing()
	{
		System.out.println("大学生 " + name + " 正在上课");
	}
}

public class Extend {
	public static void main(String[] args)
	{
		Pupil p = new Pupil();                 // 创建子类1对象
		p.name = "小红";
		p.age = 15;
		p.setScore(100);
		p.testing();
		p.Show();
		
		Gra g = new Gra();                     // 创建子类2对象
		g.name = "小花";
		g.age = 16;
		g.setScore(98);
		g.testing();
		g.Show();
	}
}

7. 抽象类

(1)介绍

当父类中的某些方法需要声明,但又不确定该如何实现时,可以将其声明为抽象方法,那么这个类也被称为抽象类。

例:类为Animal,方法为eat,但不确定是什么动物,若是猫则吃鱼,若是狗则吃骨头,无法确定,因此需要声明抽象方法。

(2)实现

一. 初始

public class Abstruct {
	public static void main(String[] args)
	{
		
	}
}

class Animal
{
	private String name;
	
	public Animal(String name)
	{
		this.name = name;
	}
	
	public void eat()
	{
		System.out.println("这是一个动物,但不知道是什么动物,吃什么?");
	}
}

二. 改为抽象类

· 去掉方法体,只剩下方法声明,并加上"abstract"改为抽象方法

· 类声明前加上"abstract"改为抽象类

· 一般来说抽象类会有子类来继承,抽象掉的方法,会由子类来实现

· (细节)抽象类不能被实例化,即无法在主方法中new一个抽象类的对象

package chouxiang;

public class Abstract {
	public static void main(String[] args)
	{
		
	}
}

abstract class Animal            
{
	private String name;
	
	public Animal(String name)
	{
		this.name = name;
	}
	
	public abstract void eat();
}

(3)样例

package chouxiang;

abstract class Animal
{
	String name;
	
	public abstract void eat();
}

class Cat extends Animal
{
	public void eat()                            // 重写方法
	{
		System.out.println(name + "爱吃鱼");
	}
}

public class Abstract {
	public static void main(String[] args)
	{
		Cat p = new Cat();
		p.name = "小花";
		p.eat();
	}
}

8. 多线程(Thread与Runnable)

(1)方法

通过继承thread类(自带)来实现调用。

(2)实现

一. 继承Thread

public class Thread01 {
	public static void main(String[] args) throws InterruptedException
	{
		Cat p = new Cat();
		p.start();
		
		for (int i = 1 ; i <= 10 ; i++)
		{
			System.out.println(i);
			Thread.sleep(1000);
		}
	}
}

class Cat extends Thread
{
	public void run()
	{
		int i=1;
		while (i <= 10)
		{
			System.out.println("喵喵,我是小猫咪");
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			i++;
		}
	}
}

二. Runnable

· 什么时候用Runnable:由于java是单继承,当一个类已经继承了一个父类时,无法再继承Thread,因此只能用接口模式。

public class Thread02 {
	public static void main(String[] agrs)
	{
		Dog p1 = new Dog();
		Thread thread = new Thread(p1);
		thread.start();
	}
}

class Dog implements Runnable
{
	public void run()
	{
		for (int i = 1; i <= 10; i++)
		{
			System.out.println("第" + i + "小狗汪汪叫");
		}
	}
}

(3)为什么不是直接调用 p.run()

p.start() 是开始p线程,但主线程并不会中断,而是主线程与子线程同时开始。

p.run() 是暂停主线程,调用成员方法,等其结束后再继续主线程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1718350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对象转为Map

方案一&#xff0c;Jackson String json objectMapperFace.writeValueAsString(contract);Map<String,Object> map objectMapperFace.readValue(json, Map.class);方案二 &#xff0c; apache BeanUtils Map<String,String> beanMap null;try {beanMap BeanUti…

极简朋友圈rmoments多用户版

什么是 moments &#xff1f; moments 是仿照微信朋友圈开发的个人极简朋友圈。但目前不支持多用户。 什么是 rmoments &#xff1f; rmoments 复刻自 moments&#xff0c;除了支持全部原生功能外&#xff0c;最大的特点是支持多用户。 原版 moments 目前不支持多用户。rmoment…

整理GTX收发器示例工程(高速收发器十一)

前文分析了xilinx官方提供的GTX IP示例工程&#xff0c;该代码的结构比较混乱&#xff0c;本文将该代码进行梳理&#xff0c;形成一个便于使用的模块&#xff0c;后续如果要使用多通道的收发器&#xff0c;多次例化某个模块就行了。 下图是官方例程中GTX IP相关模块的RTL视图&a…

ArcGIS教程(02):创建多模式网络数据集

启动“新建网络数据集”向导 命名网络并选择源要素类 输入网络数据集名称【ParisMultimodal_ND】&#xff0c;点击【下一页】 点击【全选】网络数据集中的要素类 点击【下一页】 设置连通性和高程策略 点击【连通性】 Metro_Entrances 的每个要素与街道要素类的折点重…

九部门联合发文知识产权保护体系建设,微版权打造全链条知产保护

近日&#xff0c;国家知识产权局会同中央宣传部、最高人民法院、最高人民检察院、公安部、司法部、商务部、海关总署、国家市场监督管理总局等八部门联合印发《知识产权保护体系建设工程实施方案》(以下简称《方案》)&#xff0c;共同加强知识产权保护体系建设。 《方案》是新时…

如此简单,一文带你玩转接口自动化上(Python + Pytest + Requests + Allure )

一. 前言 哈喽大伙们好&#xff0c;好久不见距离上次更新博客已经有一年之久了&#xff0c;这将近一年的时间小编主要的时间都花在了实习和24届校招上面了&#xff0c;最终也是收获满满&#xff0c;选择了一个还不错的offer&#xff0c;感谢一路走来的自己和身边朋友的帮助&…

Visual Studio中调试信息格式参数:/Z7、/Zi、/ZI参数

一般的调试信息都保存在pdb文件中。 Z7参数表示这些调试信息保存到OBJ目标文件中&#xff0c;这样的好处是不需要单独分发PDB文件给下游。Zi就是把所有的调试信息都保存在pdb文件中&#xff0c;以缩小发布文件的大小。ZI和Zi类似&#xff0c;但是增加了热重载的能力&#xff1…

【传知代码】MonoCon解读与复现(论文复现)

前言&#xff1a;在快速发展的计算机视觉领域&#xff0c;单目视觉&#xff08;Monocular Vision&#xff09;技术凭借其独特的优势和广泛的应用前景&#xff0c;逐渐成为了研究的热点。MonoCon作为单目视觉领域的一项重要技术&#xff0c;其独特的算法设计和高效的性能表现&am…

使用pkg打包了一个使用了sqlite3的nodejs项目,启动后闪退

从截图来看&#xff0c;问题出在 sqlite3 模块上。说明在打包过程中&#xff0c;sqlite3 模块的 .node 文件没有正确加载。 紧急解决方法&#xff1a; 其实就是exe文件还需要node_modules中的sqlite3 依赖&#xff0c;我们直接在系统顶级放一个node_modules&#xff0c;且其中只…

(2024,Video2Game,NeRF,Mesh,物理模块,游戏引擎)通过单个视频实现实时、交互、逼真且兼容浏览器的环境

Video2Game: Real-time, Interactive, Realistic and Browser-Compatible Environment from a Single Video 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. Video…

论文115:Reinforced GNNs for multiple instance learning (TNNLS‘24)

文章目录 1 要点2 预备知识2.1 MIL2.2 MIL-GNN2.3 Markov博弈2.4 深度Q-Learning 3 方法3.1 观测生成与交互3.2 动作选择和指导3.3 奖励计算3.4 状态转移和终止3.5 多智能体训练 1 要点 题目&#xff1a;用于MIL的强化GNN 代码&#xff1a;https://github.com/RingBDStack/RG…

Ollama 本地大模型框架

该篇教程主要讲解*Ollama的安装和简单使用* Ollama&#xff1a; 在本地启动并运行大型语言模型。 主要流程目录&#xff1a; 1.安装 2.使用 2.1.下载模型 2.2.简单使用 2.3.中文模型 2.4.中文社区 3.总结 1.安装 创建一个容器 切换”高级视图“ 参考填写 ollama oll…

ARM32开发——总线与时钟

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 APB总线时钟树时钟树 外部晶振内部晶振 在这个例子中&#xff0c;这条大街和巴士构成了一套系统&#xff0c;我们称之为AHB总线。 …

响应式界面控件DevExtreme - 更强的数据分析和可视化功能

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

新火种AI|OpenAI要和苹果合作了?微软有些不高兴

作者&#xff1a;一号 编辑&#xff1a;美美 和苹果之间的合作&#xff0c;可能会称为Altman引以为傲的功绩。 根据 The Information 援引知情人士的消息&#xff0c;OpenAI 已经和苹果达成了协议&#xff0c;将在其产品中运用 OpenAI 的对话式 AI。 如果进展顺利&#xff…

gitlab服务器迁移(亲测有效)

描述&#xff1a;最近公司迁移gitlab&#xff0c;我没有迁移过&#xff0c;经过网上查找资料最终完成迁移&#xff0c;途中也遇到挺多坑和两个问题&#xff0c;希望能帮到你。 新服务器安装gitlab 注意&#xff1a;新服务器gitlab版本也需要和旧版本一致。 首先查看原Gitlab…

12V转5V5A降压芯片:AH8317的全面解析

# 12V转5V降压芯片&#xff1a;AH8317的全面解析 在电子设计领域&#xff0c;电压转换器是不可或缺的组件之一&#xff0c;它们允许电子设备在不同的电源电压下稳定运行。今天&#xff0c;我们将深入探讨一款高性能的同步降压转换器——AH8317&#xff0c;它以其出色的性能和广…

连锁便利店水电远程抄表管理系统是什么?

一、系统概述 连锁便利店水电远程抄表管理系统是一种高效、智能化的解决方案&#xff0c;旨在优化便利店的能源管理&#xff0c;提高运营效率。它通过先进的技术手段&#xff0c;实现了对便利店水电用量的实时监控和远程抄表&#xff0c;大大降低了人工成本&#xff0c;提升了…

悬剑武器库5.04版

工具介绍 悬剑5 基于“悬剑网盘”精选工具集悬剑5“飞廉”云武器库制作。 操作系统&#xff1a;Windows 10 专业版 锁屏密码&#xff1a;secquan.org 解压密码: 圈子社区secquan.org 镜像大小&#xff1a;33.1GB 系统占用空间63.0 GB 镜像导入 下载镜像&#xff0c;文末…

vm:为虚拟机配置多个虚拟网卡(ubuntu20.04)

前言&#xff1a; 环境&#xff1a;虚拟机 ubuntu 20.04 要求&#xff1a;如标题&#xff0c;但是这里针对的是 ubuntu 20.04&#xff0c;对于其他操作系统&#xff0c;可以找一下其他操作系统对应的配置文件是什么 vm 添加虚拟网卡 首先进入 vm&#xff1a; 点击设置&#xf…