java—1 封装

news2024/11/15 18:57:35

目录

一、零碎内容

一、输入、输出

二、idea项目结构 

三、Java标识符的命名规范(约定俗成)

四. 方法和函数

二、快捷键

三、数组

1. 声明数组

2. 静态初始化

3. 数组动态初始化

4. 声明和初始化一起完成

 5. 数组地址

四、面向对象编程

1. 对象是什么

2.类的基本语法

1.封装

1-1.private 私有化变量

 2. this 关键字

3. 构造方法/构造器

​编辑

 4. JavaBean/实体类

​编辑

 6. static

6-1. static 修饰成员变量

6-2. 静态方法的应用

6-3. static 修饰方法

6-4. static 的注意事项


一、零碎内容

一、输入、输出

1. 输入 

import java.util.Scanner;
Scanner sc = new Scanner(System.in); // 创建一个对象

int choose = sc.nextInt();
float money = sc.nextFloat();

------->第一套体系
next(); 接收字符串
next():当开始读取字符时,当遇到  空格/Tab键/回车 截止读取;
next().chatAt(0); //只接收字符串的第一个字符

------->第二套体系
nextLine():可以读取字符前后的空格/Tab键,有回车键时截止读取。

两套输入体系最好不要混用 

弊端:① 先用第一套 ,再用第二套,会导致下面的nextLine 接受不到数据(将输完第一套的录入                  后的回车接收了)

         混用时,要清楚缓冲区的换行符

char gender_1 = sc.next().charAt(0);
sc.nextLine(); // 清除缓冲区中的换行符
       
String name_2 = sc.nextLine();

2. 输出

// 快捷键 sout

System.out println("sum = "+sum) // 输出数据后换行
// sum = 123
System.out print() // 输出数据后不换行

System.out printf("sum = %.2f",sum) // 和C 语言一样的输出格式

二、idea项目结构 

  • psvm piblic static void main{} // psvm 程序主入口

new project — 勾选 add sample code 会自动生成 main.class 

不勾选的话

 new module 勾选 add sample code 会自动生成 src main.class 

不勾选时

三、Java标识符的命名规范(约定俗成)

  • 包名:当由多个单词组成时,所有单词都是小写。如aaa.bbb.ccc。
  • 类名、接口名:单词的首字母大写。如XxxYyyZzz。(大驼峰命名法)
  • 变量名、方法名:由多个单词组成时,第一个单词均小写,其它单词首字母大写。如xxxYyyZzz。(小驼峰命名法,简称驼峰法)
  • 常量名:所有字母均大写。且由多个单词组成时,单词之间用下划线“_”隔开。如XXX_YYY_ZZZ。

四. 方法和函数

类中的函数叫方法

二、快捷键

IDEA常用快捷键整理大全(非常详细)持续更新中..._keymap idea-CSDN博客

  1. 多行代码注释  //  ctrl + /   /* */  ctrl + shift + /
  2. Ctrl + P 展示出这个方法的调用参数列表信息。
  3. ctrl + alt + m 自动抽取方法
  4. ctrl + d 复制这行代码到下一行
  5. Alt + Insert  快速生成含有任意形参的构造器和私有属性的Getter/Setter等方法(最常使用
    1. constructor -> Select None——> 空参
    2. 点击shift 不松,点击最下面的 或者  ctrl+a 全选——带全部参数的构造
    3. Getter and Setter——> ctrl+a 全选——> 对每个是私有化的变量都提供get set 方法
    4. 插件PTG 秒生成标准Javabean
  6. ctrl+alt+L 格式化代码变得规整

三、数组

Java数组(这一篇就够了)(超详细)-CSDN博客

1. 声明数组

 java 一般用第一种,c 用第二种

float boy[];
float a[][];

一次声明多个数组
float [] a,b;
* float [] a,b[]; // 相当于 float a[],b[][];

// 与C 不同,java 不允许在声明数组时指定数组元素的个数
float a[12]; //会报错

2. 静态初始化

 

3. 数组动态初始化

4. 声明和初始化一起完成

float[] boy = new float[4]
float[] boy: 声明一个float 类型的数组,数组名arr。(声明,打招呼我要来了,给我预留内存)
new float[4]: 创建了一个长度为 6 的 float类型的数组,并将其分配给变量 arr。(分配内存)

万物皆是类,float 也是类。都说new 一个对象,arr 就是 float类数组的一个对象。

float a[][];   // 
a = new float[3][4];
等价于
float a = new flaot[3][4]

// 和c 不同的是 java可以使用int变量的值指定数组大小
int size = 30;
float boy = new float[size];

 5. 数组地址

int[] arr = new int[6]; 数组 arr 装六个整数

现在装六个电影对象
电影对象类型是什么? —— Movie 类本身就是类型,万物皆类型
Moive[] movies  = new Movie[6]

四、面向对象编程

 对象本质上是一种特殊的数据结构(可以理解为一张表),存储数据。

class 也就是类,也成为对象的数据图(或者对象的模板)

1. 对象是什么

声明对象的格式

类名  对象名  =  new  类名();

s1 就是一个明星(对象) s1是一个地址。

对象在计算机中的表现

java代码的运行实际上在JVM(虚拟机)上。在内存中,为了更好的执行,分为 栈内存,堆内存和方法区。

方法区:放 class 文件,方法的执行放到栈(先进后出)里面。对象放在堆内存

面向对象编程是什么

万物皆对象,谁的数据谁存储。

2.类的基本语法

1.封装

把数据和对数据的处理放到同一个类中

  • 封装的设计要求

合理隐藏,合理暴露                                                                

1-1.private 私有化变量

private用于合理隐藏;get、set进行合理暴露

私有化变量是为了保证数据的输入合法(如果不合法可以在set方法中设置)为什么不在输入时判断呢?
如果你有108个女朋友,每个都要写个判断语句,太麻烦

 2. this 关键字

this 表示方法的调用者:哪个对象调用这个方法,this就拿到哪个对象

主要用来解决变量名冲突问题

package com.daydayup.fengzhaung;

public class GrilFriend {
    // 属性(名词)
    // 类里面,方法的外面的变量 成员变量
    private String name;
    // 私有化变量是为了保证数据的输入合法(如果不合法可以在set方法中设置)为什么不在输入时判断呢?
    // 如果你有108个女朋友,每个都要写个判断语句,太麻烦
    private int age;
    String gender;

    // 对于一个私有化的变量,都要提供get和set方法
    // set: 给成员变量赋值
    // get: 对外提供成员变量的值

    // 作用:给成员变量name进行赋值
    public void setName(String name){
        this.name = name; // 因为方法的参数与成员变量相同。对成员变量进行赋值 要用this
    }

    // 作用:对外提供name属性
    public String getName(){
        return name;
    }

    public void setAge(int age){
        if (age >= 18 && age <= 30){
            this.age = age;
        }else{
            System.out.println("非法参数");
        }
    }
    public int getAge(){
        return age;
    }
    // 行为(动词)
    public void sleep(){
        System.out.println("睡觉");
    }

    public void eat(){
        System.out.println("吃饭");
    }
}
package com.daydayup.fengzhaung;

public class GrilFriendTest {
    public static void main(String[] args) {
        // 创建女朋友的对象
        GrilFriend gf1 = new GrilFriend();
        // 赋值
        gf1.setName("诗诗");
        gf1.setAge(18);
        gf1.gender = "萌妹子";

        System.out.println(gf1.getName());
        System.out.println(gf1.getAge());
        System.out.println(gf1.gender);

        gf1.eat();
        gf1.sleep();
    }
}

3. 构造方法/构造器

就是为了在创造对象的时候,由虚拟机自动调用,给成员变量初始化的。

在编写一个类时没有添加无参构造方法,那么编译器会自动添加默认无参构造方法;(如果自己手动添加构造函数,无论有参数或是没参数,默认构造函数都将无效)
编写时添加有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而不会默认添加无参构造方法。
如果需要使用无参构造方法,一定要在类里面添加。

作用

给数据赋值的时候,不用  t1.XX,好几行,只需一行就可以解决

// lombok 技术可以实现为类自动添加get、set 方法 无参数构造器,toString方法
// @Data // @Data注解可以自动生成get、set方法 无参构造器,toString方法
// @NoArgsConstructor  无参构造器
// @AllArgsConstructor 有参构造器

 4. JavaBean/实体类

 6. static

叫静态,可以修饰成员变量、成员方法

6-1. static 修饰成员变量

 静态方法,在同一个类中 类名可以不写(这就是为什么在mian()方法中调用静态方法不写成main.XXX()的原因)

6-2. 静态方法的应用

 写工具类

比如一个验证码,登录界面需要,注册界面也需要。

那为什么不用实力方法呢?因为实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存。

工具类没有创建对象的需求,建议将工具类的构造器进行私有

6-3. static 修饰方法

 有static修饰的成员方法

 无static修饰的成员方法

 总结:1. 如果一个方法只是为了做一个功能且不需要直接访问对象的数据,这个方法志杰定义成静态方法

2. 如果这个方法是对象的行为,需要访问对象的数据,这个方法必须定义为实例方法。

 静态方法,在同一个类中 类名可以不写(这就是为什么在mian()方法中调用静态方法不写成main.XXX()的原因)

6-4. static 的注意事项

 第一条

因为实例成员是属于对象的,直接访问,他哪知道访问哪个对象的成员变量/方法

第二条

静态成员独一份,只有那一个,要访问就访问他嘛。因为实例的方法也是属于对象的方法,使用实例方法的时候,一定是用 对象名.实例方法(),其中已经给定了是哪个对象。

第三条

this 代表的是对象。静态方法没有对象,上哪调啊。实例方法是用对象调用的,所以 this 有指代的对象。

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

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

相关文章

进程函数练习

创建子父进程&#xff0c;子进程将1.txt内容拷贝到2.txt中&#xff0c;父进程将3.txt内容拷贝到4.txt中。 #include <myhead.h>int main(int argc, const char *argv[]) {pid_t ID;ID fork();if(ID>0)//父进程{printf("父进程ID:%d\n",ID);int fd open(&…

C HTML格式解析与生成

cmake报错替换 if(NOT MyHTML_BUILD_WITHOUT_THREADS OR NOT MyCORE_BUILD_WITHOUT_THREADS) set(CMAKE_THREAD_PREFER_PTHREAD 1) if (WIN32) set(CMAKE_USE_WIN32_THREADS_INIT ON) set(CMAKE_THREAD_PREFER_PTHREADS TRUE) set(THREADS_PR…

Covalent Network(CXT)第二季度委托激励增长83%

Covalent Network&#xff08;CXT&#xff09;是一家领先的区块链数据解决方案供应商&#xff0c;拥有超过 230 条链的集成和数十亿个结构化数据点&#xff0c;专注于去中心化应用&#xff08;dApps&#xff09;和长期数据可用性。Covalent Network&#xff08;CXT&#xff09;…

C语言 之 整数在内存中的存储、大小端字节序和字节序的判断

文章目录 整数在内存中的存储大小端字节序和字节序判断大小端有大小端的原因高位和地位怎么区分&#xff1f;图例判断机器大端还是小端的例题 整数在内存中的存储 整数的2进制表示方法有三种&#xff0c;即 原码、反码和补码 三种表示方法均有符号位和数值位两部分&#xff0c…

DHCP DNS 欺骗武器化——实用指南

DHCP 枚举 在我们之前的文章中,我们分享了 DHCP DNS 欺骗背后的理论。实际上,需要几条信息才能有效地执行我们描述的攻击。对于攻击者来说幸运的是,发现DHCP 服务器并了解其配置的能力是 DHCP 协议的一部分,这使得侦察过程变得微不足道。 在以下章节中,我们将描述攻击者…

基于华为昇腾910B和LLaMA Factory多卡微调的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

PostgreSQL 与对象存储的结合: 在 MinIO 中访问外部数据

数据领域最激动人心的发展之一是湖仓一体功能在所有主要数据库供应商中的兴起。Snowflake 和 SQL Server 长期以来一直采用这一点&#xff0c;现在 PostgreSQL 正在通过 pg_lakehouse 拥抱这种范式转变&#xff0c;使得利用现代数据湖进行分析、AI 等比以往任何时候都更容易。随…

【Java 搜索二维矩阵 I II,多数元素 I II,分治法 二分法 摩尔投票法】

搜索二维矩阵 I II&#xff0c;多数元素&#xff0c;分治法 & 二分法 & 摩尔投票法 题目1&#xff1a;力扣-搜索二维矩阵[https://leetcode.cn/problems/search-a-2d-matrix/description/](https://leetcode.cn/problems/search-a-2d-matrix/description/)分治-排除法分…

了解精密零部件加工制造的关键技术

在现代工业领域中&#xff0c;精密零部件的加工制造起着至关重要的作用。从高端电子设备到航空航天领域&#xff0c;都离不开高精度的零部件。时利和详细解析了解精密零部件加工制造的关键技术&#xff0c;对于推动工业发展的重要性。 高精度的加工设备是实现精密零部件制造的基…

嬴图 | 从数据到智能,解密物流业的“智慧大脑”——图数据库的颠覆性力量

前言 早在3000年前&#xff0c;古埃及、希腊、罗马就开始利用航运系统开启了物资运输和分配&#xff0c;并形成了奥斯提亚、亚历山大港等古代超级物流中心&#xff1b;而在古中国和古印加&#xff0c;完善的驿站系统又将物资、人员、供给等方面进行了升级支持&#xff0c;从制…

MATLAB进阶:矩阵代数

今天我们学习矩阵在MATLAB中的运算。 运算符 与数组运算相同&#xff1a; A. ’转罝 A’&#xff08;共轭&#xff09;转罝 共轭转置&#xff08;A’或A†&#xff09;&#xff1a; 对于一个复数矩阵A&#xff0c;其共轭转置记作A’或A†。共轭转置不仅将矩阵A的行和列互…

用于超声电影中同时检测关键帧和地标的贝叶斯网络| 文献速递-大模型与多模态诊断阿尔茨海默症与帕金森疾病应用

Title 题目 A Bayesian network for simultaneous keyframe and landmark detection inultrasonic cine 用于超声电影中同时检测关键帧和地标的贝叶斯网络 01 文献速递介绍 超声电影&#xff08;Ultrasonic cine&#xff09;是超声检查中常见的保存形式&#xff0c;允许实…

ComsolMatlab 可扩展设计的高效低频阻抗调制声学超材料

参考文献&#xff1a;Zeng K, Li Z, Guo Z, et al. Acoustic metamaterial for highly efficient low-frequency impedance modulation by extensible design[J]. Extreme Mechanics Letters, 2022, 56: 101855. 我们提出了一种创新的低频宽带高效吸声材料&#xff0c;其设计原…

基于Kotlin Multiplatform实现静态文件服务器(五)

Netty简介 Netty 是一个利用 Java 的高级网络的能力&#xff0c;隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 文件服务 文件服务基于Netty框架实现&#xff0c;关于Netty&#xff0c;可以了解&#xff1a;https://netty.io/。 class BootStrapServe…

“购物也能赚钱?‘随机返利‘模式颠覆你的消费体验!“

近期&#xff0c;关于“消费即享随机返利”的话题在张三与李四之间频繁提及&#xff0c;这一新颖的消费机制究竟是何方神圣&#xff1f; 实质上&#xff0c;它并非某种实体物品&#xff0c;而是一种创新的营销策略&#xff0c;旨在促进商品销售。去年&#xff0c;一位精明的商家…

【25届秋招】饿了么0817算法岗笔试

目录 1. 第一题2. 第二题3. 第三题 ⏰ 时间&#xff1a;2024/08/17 &#x1f504; 输入输出&#xff1a;ACM格式 ⏳ 时长&#xff1a;100min 本试卷还有单选和多选部分&#xff0c;但这部分比较简单就不再展示。 最近终于有时间继续整理之前的笔试题了&#xff0c;因为时间仓促…

Gartner发布2024年终端和工作空间安全成熟度曲线:24项相关技术发展和应用状况及趋势

由于攻击者使用人工智能来增强网络钓鱼和终端攻击&#xff0c;企业需要高级安全措施来阻止入侵行为。此技术成熟度曲线可帮助安全和风险管理领导者识别可增强终端和工作空间保护的技术。 需要知道什么 网络安全创新层出不穷&#xff0c;但区分真正的进步与短暂的趋势却很困难。…

如何在Python中使用IP代理

在网络爬虫、数据抓取等应用场景中&#xff0c;使用IP代理可以有效避免IP被封禁&#xff0c;提高爬取效率。本文将详细介绍如何在Python中使用IP代理&#xff0c;帮助你在实际项目中灵活应用。 准备工作 在开始之前&#xff0c;你需要准备以下工具和资源&#xff1a; Python环…

Go Convey测试框架入门(go convey gomonkey)

Go Convey测试框架入门 介绍 GoConvey是一款针对Golang的测试框架&#xff0c;可以管理和运行测试用例&#xff0c;同时提供了丰富的断言函数&#xff0c;并支持很多 Web 界面特性。 Golang虽然自带了单元测试功能&#xff0c;并且在GoConvey框架诞生之前也出现了许多第三方测…

JAVA后端程序拉取私人仓库的npm包并将该程序打包成jar包

当前有一个系统用于导出项目&#xff0c;而每次导出的项目并不可以直接使用&#xff0c;需要手动从npm私人仓库中获取一个npm包然后将他们整合到一起它才是一个完整的项目&#xff0c;所以目前我的任务就是编写一个java程序可以自动地从npm私人仓库中拉取下来那个模板代码到指定…