Java入门篇 之 补 类与对象

news2024/11/18 23:39:30

本篇碎碎念:每个人的想法都不一样,不要强求,顺其自然,要相信,一切都在向好的方面前进!!!!

今日份励志文案:山海的浩瀚,宇宙的浪漫,都在我内心翻腾,在推着我前进

冲冲冲!!!!

目录

前言:类与对象的的定义与使用

1.创建类

 2.创建具体的对象

一.封装 

二.访问限定符

 三.包

四.static成员

五.代码块

六.Math类(拓展):


前言:类与对象的的定义与使用

1.创建类

class 类名{

   成员变量/实例对象;
   成员方法;

}

 2.创建具体的对象

类名称 引用名称=new 类名称();

例如:

class Student {
    public String name ;
    public int age;
    public String sex;
}
public class happy {
 
    public static void main(String[] args){
 
        Student people=new Student();
        people.age=20;
        people.name="ly";
        people.sex="女";
 
        System.out.println("年龄:"+people.age);
        System.out.println("姓名:"+people.name);
        System.out.println("性别:"+people.sex);
    }
}

一.封装 

面向对象的几个重要的特征:封装,继承,多态

封装:将类的实际细节进行了隐藏,对外只提供一些开放的接口

封装只不过是在类外看不见这个字段

给public变成private

public:是一个访问修饰限定符,可以修饰类名,接口,方法,成员变量

private:方法或成员属性被private修饰后,当前方法或成员变量只能在当前类中使用

直接拿不到的话,可以间接拿到,利用函数的方法去调用

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
public static void main(String[] args) {
        Student student = new Student("张三",10);
        student.setName("小王");
        System.out.println(student.getName());
        System.out.println(student.getAge());
 }

get方法开头,后面跟着的属性名首字母大写的形式(上述代码中也有体现)

由于该属性是私有的,因此在类的外部无法直接访问该属性,必须通过get方法来获取属性的值

set方法,用于设置对象的私有属性值,跟get方法一样,后面跟着的属性名首字母大写的形式

并接受一个参数,即要设定的属性值

二.访问限定符

public:可以理解为一个人的外貌特征,谁都可以看到

default:对于自己家族中(同一个包)不是什么秘密,对于其他人就是隐私(default默认的,什么都不写的情况时的默认权限)

private:只有自己知道,其他人都不知道

 三.包

为了更好的管理类,把多个类收集在一起成为一组,成为软件包

如何在idea情况下建包:右键src,new,选择package,输入包名

用import导包

*表示通配,要哪一个就能匹配到哪一个

(更建议显示指定要导入的类名,否则容易出现冲突的情况)

四.static成员

被static修饰的成员变量不属于对象;也不依赖于对象;

就不能通过对象的引用来访问,不是报错是警告;可以这样做但是不合理

合理的方式是:通过类名访问,不属于对象,属于类

类的成员变量 其实有两种

(1) 静态成员变量

1静态成员变量类的,不属于对象的

2 类名+点号来访问静态成员变量

(2) 非静态成员变量/普通成员变量

1 属于对象的,每实例化一个对象,都会有一个对应的非静态成员变量;

2 每个对象都有,对应的引用+点号来访问

static修饰的成员变量,成为静态成员变量

静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的

静态成员变量特性:

1不属于某个具体的对象,是类的属性,是所有对象所共享的,不存储在某个对象的空间

2.既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问

3.类变量存储在方法区中

4.生命周期伴随类的一生(随类的加载而创建,随类的卸载而销毁)

Java没有全局变量的概念,静态的只能是成员变量,不能是局部变量

Static修饰成员方法:

成员变量是里面的内容({   }里面的内容)

成员方法:

修饰符 返回类型 方法名 (参数列表){方法体}

例如 public String student(String name){ ... }

静态方法特性:

1.不属于某个具体的对象,是类方法

2.可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐后者

3.在静态方法内部不能使用非静态的数据成员

4.静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

五.代码块

普通代码块,定义在方法当中的代代码块

被static修饰的代码块是静态代码块

先执行静态代码块,在执行实例代码块,最后是执行构造方法

同为静态代码块,看定义的顺序进行运行

怎么定义就怎么按照顺序运行

注意:静态代码块不管生成多少个对象,只会执行一次

class TestStatic {
    public static int staticNum = 100;
    public int data1 = 10;

    {
        //构造代码块 || 实例代码块
        System.out.println("实例代码块被执行了....");
        data1 = 1000;//一般情况下  用来初始化 非静态的数据成员
        //staticNum = 1000000;
    }

    static {
        System.out.println("静态代码块被执行了....");
        staticNum = 9999;
    }

    static {
        staticNum = 91999;
    }

    public TestStatic() {
        System.out.println("执行构造方法.....");
    }
}

public class exam {
    public static void main(String[] args){
            TestStatic testStatic = new TestStatic();
        }
    }

 

六.Math类(拓展):

有一些数学运算的表达式比较复杂,Java中的java.lang.Math类以静态方法的形式提供了很多常用的数学函数,比如:指数、对数、三角函数和平方根等等。这些常用的数学函数能够使我们快速的得到一些复杂的数学运算结果,而不需要我们自己编写这些复杂的运算。

Math提供的属性或方法:

1.Math.PI:代表圆周率

2.Math.max(a,b):比较数值a和b中哪一个大,返回大的那个数值.

3.Math.min(a,b):比较数值a和b中哪一个小,返回小的那个数值.

4.Math.pow(a,b):求a的b次幂

5.Math.sqrt(a);求a的平方根

6.Math.random();此方法会返回一个[0,1)之间的随机小数

 public static void main(String[] args){
        int a=10;
        int b=20;
        int c=Math.max(a,b);

        System.out.println(c);
    }

c的值为20,

使用前要导包

import static java.lang.Math.*;

如果有解释的不对或者不清晰,如果可以从评论区指出,我一定会加以修改,万分感谢

希望对你们有所帮助

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

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

相关文章

【Python】Matplotlib-多张图像的显示

一,情景描述 大家在写论文或者实验报告的时候,经常会放多张图片或数据图像在一起形成对比。比如,我现在有一张经过椒盐噪声处理的图像,现在进行三种滤波,分别是均值,高斯,中值滤波,…

计算机网络技术(一)

深入浅出计算机网络 微课视频_哔哩哔哩_bilibili 第一章概述 1.1 信息时代的计算机网络 1. 计算机网络各类应用 2. 计算机网络带来的负面问题 3. 我国互联网发展情况 1.2 因特网概述 1. 网络、互连网(互联网)与因特网的区别与关系 如图所示&#xff0…

计算机组成原理之处理器(流水线)

引言 为什么不采用单周期实现,硬件比较简单? 主要是因为效率太低,处理器中最长的路径(一般是ld指令)决定了时钟周期 流水线概述 流水线是一种能使多条指令重叠执行的技术。 流水线更快的原因是所有的工作都在并行执行,所以单位…

Adversarial Training Methods for Deep Learning: A Systematic Review

Adversarial Training Methods for Deep Learning: A Systematic Review----《面向深度学习的对抗训练方法:系统回顾》 摘要 通过快速梯度符号法(FGSM)、投影梯度下降法(PGD)和其他攻击算法,深度神经网络暴露在对抗攻击的风险下。对抗性训练是用来防御对抗性攻击威…

【86 backtrader实现crypto交易策略】backtrader和ccxt对接实现中低频自动化交易-01

最近有点空闲,尝试把backtrader和一些实盘交易的接口对接一下,方便大家进行中低频交易,主要目标包括:股票(qmt),期货(ctpbee), crypto(ccxt),外盘交易(ib,已实现,但是版本比较旧,后期会继续更新). 这个周末尝试实现了backtrader和ccxt的对接,主要是参考了下面的开源代…

使用74HC165扩展uno的输入管脚

74HC165管脚定义: 使用3个管脚扩展接入个独立开关 const int dataPin 2; /* Q7 */ const int clockPin 3; /* CP */ const int latchPin 4; /* PL */ const int numBits 8; /* Set to 8 * number of shift registers */ void setup() { Serial.begin…

暴力递归转动态规划(十五)

题目 给定一个正数n,求n的裂开方法数, 规定:后面的数不能比前面的数小 比如4的裂开方法有: 1111、112、13、22、04 。 5种,所以返回5 暴力递归 用暴力递归方法进行尝试,整体思路是这样: 暴力递…

Java --- 直接内存

一、直接内存 1、不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 2、直接内存是在Java堆外的,直接向系统申请的内存区间。 3、来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。 4、访问直接内存的…

Ubuntu 创建并发布 Django 项目

Ubuntu 创建并发布 Django 项目 升级操作系统和软件 sudo apt updatesudo apt -y dist-upgrade 安装 python3-pip sudo apt -y install python3-pip安装 django pip install -i https://pypi.tuna.tsinghua.edu.cn/simple djangosudo apt -y install python3-django创建 dj…

MongoDB基础知识~

引入MongoDB: 在面对高并发,高效率存储和访问,高扩展性和高可用性等的需求下,我们之前所学习过的关系型数据库(MySql,sql server…)显得有点力不从心,而这些需求在我们的生活中也是随处可见的,例如在社交中…

使用visualStudio发布可执行文件

编译成功后会在程序项目的路径下创建一个debug文件夹和一个release文件夹 文件夹中的具体文件入下所示 生成32位的可执行文件 32位的可执行文件可以在64位的计算机中执行,而64位的操作系统程序只能在64位的计算机中执行安装运行库的安装包根据电脑的版本选择合适的…

手机开机入网流程 KPI接通率和掉线率

今天我们来学习手机开机入网流程是怎么样的。以及RRC连接和重建流程(和博主之前讲TCP三次握手,四次挥手原理很相似)是什么样的,还有天线的KPI指标都包括什么,是不是很期待啊~ 目录 手机开机入网流程 ATTACH/RRC连接建立过程 KPI接通率和掉…

【YOLOv5】【模型压缩与加速】【量化】FP32、FP16、INT8

量化是将模型参数的存储类型从高精度存储降到低精度存储,从而达到减小模型体积大小、加快模型推理速度的效果。 目录 FP32量化 FP16量化 INT8量化 FP32量化 这个直接使用yolov5的export导出32位存储的 engine格式模型即可 python export.py --weights runs/train/…

前端---认识HTML

文章目录 什么是HTML?HTML的读取、运行HTML的标签注释标签标题标签段落标签换行标签格式化标签图片标签a标签表格标签列表标签表单标签form标签input标签文本框单选框复选框普通按钮提交按钮文件选择框 select标签textarea标签特殊标签div标签span标签 什么是HTML&a…

No188.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

C语言基础篇4:变量与存储

1 局部变量和全局变量 在介绍局部变量和全局变量前,先,了解一些关于作用域方面的内容。作用域的作用就是决定程序中的哪些语句是可用的,换句话说,就是程序中的可见性。作用域有局部作用域和全局作用域,那么局部变量就具…

深入研究SVN代码检查的关键工具:svnchecker vs. SonarQube,选择最适合你的代码检查工具

目录 一、SVN代码检查(整合svnchecker)1、创建SVN代码库2、下载安装包3、修改SVN配置4、新建代码检查配置文件(名称自定义)5、hooks目录添加配置文件6、设置只对Java文件进行检查7、测试 二、SonarQube代码检测1、什么是SonarQube2、MySQL数据库的安装3、SonarQube服务端软件安…

Python之函数进阶-函数执行原理

Python之函数进阶-函数执行原理 函数执行流程 C语言中,函数的活动和栈有关。栈是后进先出的数据结构。栈是由底端向顶端生长,栈顶加入数据成为压栈、入栈、栈顶弹出数据称为出栈。 def add(x, y):r x yprint(r)return rdef main():a 1r add(a, 2)r…

Pytorch损失函数、反向传播和优化器、Sequential使用

Pytorch_Sequential使用、损失函数、反向传播和优化器 文章目录 nn.Sequential搭建小实战损失函数与反向传播优化器 nn.Sequential nn.Sequential是一个有序的容器,用于搭建神经网络的模块被按照被传入构造器的顺序添加到nn.Sequential()容器中。 import torch.nn …

【操作系统】1.1 操作系统的基础概念、功能和目标以及特性

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…