java期末突击

目录

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 blocke.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.mzph.cn/diannao/19844.shtml

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

相关文章

从头开始构建GPT标记器

从头开始构建GPT标记器 对于GPT Tokenizer&#xff0c;论文《Language Models are Unsupervised Multitask Learners》中介绍了一种字节级编码作为LLM的标记化机制&#xff1a; The vocabulary is expanded to 50,257. We also increase the context size from 512 to 1024 to…

C# 代码配置的艺术

文章目录 1、代码配置的定义及其在软件工程中的作用2、C# 代码配置的基本概念和工具3、代码配置的实践步骤4、实现代码配置使用属性&#xff08;Properties&#xff09;使用配置文件&#xff08;Config Files&#xff09;使用依赖注入&#xff08;Dependency Injection&#xf…

跨境电商如何有效做好店铺账号管理?

跨境电商有效做好店铺账号管理至关重要&#xff0c;类似亚马逊、Temu、TikTok、ebay跨境电商账号涉及多个方面&#xff0c;包括多个账户的安全性、合规性、操作效率等。以下是一些我自己实操的策略和实践&#xff0c;希望能够帮助大家更好地管理跨境电商店铺账号。 一、哪些行为…

Spring Boot 整合 spring-boot-starter-mail 实现邮件发送和账户激活

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

单片机串口接收负数的处理方法

dp80中有很多外设处理相关的都是有符号数据。 如dpm计算的结果&#xff0c;插入dpm后有时候会得到0xFFFFFFFE-2&#xff08;从调试界面也可以看到&#xff09;。

【深度密码】神经网络算法在机器学习中的前沿探索

目录 &#x1f69d;前言 &#x1f68d;什么是机器学习 1. 基本概念 2. 类型 3. 关键算法 4. 应用领域 5. 工作流程 &#x1f68b;什么是神经网络 基本结构 &#x1f682;神经网络的工作原理 前向传播&#xff08;Forward Propagation&#xff09;&#xff1a; 损失函…

RT-DETR:端到端的实时Transformer检测模型(目标检测+跟踪)

博主一直一来做的都是基于Transformer的目标检测领域&#xff0c;相较于基于卷积的目标检测方法&#xff0c;如YOLO等&#xff0c;其检测速度一直为人诟病。 终于&#xff0c;RT-DETR横空出世&#xff0c;在取得高精度的同时&#xff0c;检测速度也大幅提升。 那么RT-DETR是如…

前端 CSS 经典:3D Hover Effect 效果

前言&#xff1a;有趣的 3D Hover Effect 效果&#xff0c;通过 js 监听鼠标移动&#xff0c;动态赋值 rotateX&#xff0c;rotateY 的旋转度来实现。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta …

基于鲲鹏服务器搭建简单的开源论坛系统(LAMP)实践分享

LAMPLinux apache mysql( mariadb) PHP 结合利用华为云弹性负载均衡ELB弹性伸缩AS服务 优点&#xff1a; 将访问流量自动分发到多台云服务器&#xff0c;扩展应用系统对外的服务能力&#xff0c;实现更高水平的应用容错&#xff1b; 根据不同的业务、访问需求和预设策略&…

flask-slqalchemy使用详解

目录 1、flask-sqlalchemy 1.1、flask_sqlalchemy 与sqlalchemy 的关系 1.1.1、 基本定义与用途 1.2、flask_sqlalchemy 的使用 1.2.1、安装相关的库 1.2.2、项目准备 1.2.3、创建ORM模型 1.2.3.1、使用db.create_all()创建表的示例 1.2.3.2、创建多表关联ORM模型 1.…

【ETAS CP AUTOSAR基础软件】EcuM模块详解

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中EcuM模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解EcuM。文中涉及的SOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工具链来配置与生…

语音群呼之语音导航的应用

在数字化时代&#xff0c;语音群呼技术已成为企业、组织和个人高效沟通的重要工具。语音群呼不仅能够快速地将信息传递给目标群体&#xff0c;而且通过语音导航功能&#xff0c;还能确保信息传达的准确性和用户体验的优质性。本文将深入探讨语音群呼的语音导航功能&#xff0c;…

【数据结构与算法】算法优化、时间复杂度、空间复杂度

文章目录 一、什么是复杂度&#xff1f;二、大O表示法三、时间复杂度计算四、常见复杂度的比较五、算法优化的核心方法论六、常见算法复杂度五、总结 一、什么是复杂度&#xff1f; 复杂度是衡量代码运行效率的重要的度量因素。 而复杂度主要就是指时间复杂度和空间复杂度。 …

算法思想总结:哈希表

一、哈希表剖析 1、哈希表底层&#xff1a;通过对C的学习&#xff0c;我们知道STL中哈希表底层是用的链地址法封装的开散列。 2、哈希表作用&#xff1a;存储数据的容器&#xff0c;插入、删除、搜索的时间复杂度都是O&#xff08;1&#xff09;&#xff0c;无序。 3、什么时…

低功耗蓝牙模块在便携式医疗设备上的应用前景

随着科技的不断发展&#xff0c;医疗设备的便携性和智能化已经成为了一种趋势。在这个背景下&#xff0c;低功耗蓝牙模块(Bluetooth Low Energy,简称BLE)作为一种先进的无线通信技术&#xff0c;正逐渐在便携式医疗设备中发挥着越来越重要的作用。本文美迅物联网MesoonRF将探讨…

TiKV学习5:TiDB SQL执行流程

目录 1. DML语句读流程概要 2. DML语句写流程概要 3. DDL 流程概要 4. SQL的Parse和Compile 5. 读取的执行 6. 写入的执行 7. DDL的执行 8. 小结 1. DML语句读流程概要 TiDB Server接收sql并处理&#xff0c;TiKV负责持久化数据&#xff0c;PD提供TSO和Region的数据字典…

HackTheBox-Machines--Bashed

Bashed 测试过程 1 信息收集 NMAP 80 端口 目录扫描 http://10.129.155.171/dev/phpbash.min.php http://10.129.155.171/dev/phpbash.php 半交互式 shell 转向 交互式shell python -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.co…

优化CPU占用率及内存占用2

在标准化无线通信板时&#xff0c;关注过程序占用ram的问题&#xff0c;当时 发现每一个线程都会分配8M栈空间&#xff0c;这次换rk3568后&#xff0c;偶尔看了下RAM占用&#xff0c;吓了一跳&#xff0c;不但每个线程有8M栈空间&#xff0c;几乎每个线程都占用了64MB的一个RAM…

AOP进阶

黑马程序员JavaWeb开发教程 文章目录 一、通知类型1.1 通知类型1.2 注意事项1.3 PointCut 二、通知顺序2.1 执行顺序 三、切入点表达式3.1 切入点表达式3.2 切入点表达式-execution3.2 切入点表达式- annotation 四、连接点4.1 连接点 一、通知类型 1.1 通知类型 Around&…

部署专属网页版ChatGPT-Next-Web

背景 工作学习中经常使用chat-gpt, 需求是多端使用gpt问答&#xff0c;因此搭建一个网页版本方便多个平台使用。最后选择了 ChatGPT-Next-Web 部署说明 一键部署自己的web页面&#xff0c;因为是使用免费的vercel托管的&#xff0c;vercel节点在全球都有&#xff0c;理论上突…