2.1 java基础 day02 流程控制 创建类和对象 栈堆元空间

news2024/10/5 13:53:57

1流程控制


流程控制:

1.1.计算机在执行代码时对指令代码执行顺序的控制

1.2.Java 流程控制主要分三种:

顺序执行
分支执行
重复执行
1.3.顺序执行

按代码和语法出现的先后顺序执行
1.4.分支执行

根据判断条件执行分支逻辑
可选分支、必选分支(多选一)、多分支、特殊分支(switch)
1.5.重复执行

根据条件循环执行
while、do … while、for
break 和 continue


分支执行:

可选分支(单分支,if true or false)
必选分支(双分支,if / else)
多分支(多重判断,if / else if / {else})
特殊分支(等值判断,switch case
switch:
会对数据进行判断,如果等于某一个分支数据的值,会执行该分支的逻辑代码,并顺序执行后面的分支
如果一个分支都无法匹配,那么一个分支都不会执行,此时如果还想执行分支,可以增加 default 关键字(必选)
如果执行某个分支后,不想再执行其他分支,可以使用 break 关键字跳出当前分支
小练习:根据年龄判断成长阶段
 

package chapter02;

public class java04_nianlingtezheng {
    public static void main(String[] args) {
        int age=10;
        if(age<7){
            System.out.println("儿童");
        }else if (age<18){
            System.out.println("少年");
        }else if(age<40){
            System.out.println("成年");
        }else if(age<60){
            System.out.println("中年");
        }else {
            System.out.println("老年");
        }
    }
        }


重复执行:

**while:**有条件循环
while (条件表达式) {}

先判断条件,{} 执行完毕后,重新判断条件

小心死循环

2.do {} while:

先执行 do{},再判断条件

至少执行一次

3.for ( a; b; c) :

初始化表达式(用于条件表达式中的变量初始化)

条件表达式(决定是否执行循环)

更新表达式(控制循环次数)

break 跳出当前层循环,不再执行后续操作

continue 跳过当前层的这次循环,继续执行下次循环

6.小练习:九层妖塔

结合使用 print 和 println
嵌套循环找规律
 

package chapter02;

public class java05_chongfuzhixing {
    public static void main(String[] args) {
        int level=6;
        for(int j=0;j<level;j++){
//           打印前面的空格
            for(int i=0;i<level-j;i++){
                System.out.print(" ");
            }
//            打印星号
            for(int i=0;i<j*2+1;i++){
                System.out.print("*");
            };
//          换行
            System.out.println(" ");

        }

    }
}

面向对象


1.面向过程:把大象装进冰箱里分三步

2.思考方式:如果需要解决很多类似问题,每次梳理步骤过程就会比较麻烦,但如果直接去分析问题涉及的具体事物(Object,对象),会更符合日常生活的思考方式,这就叫“面向对象编程”

3.面向对象:是一种编程思想,一种分析事物和解决问题的方式,我们通过编程语言的语法来体现这种思想

基本语法:

1.类和对象:

类表示归纳和整理
对象表示具体事物
2.类的语法基本语法结构:

class 类名 {
特征(属性),
功能(方法)
}

创建对象的语法:
new 类名();

3.步骤:

TODO 1. 先声明类

TODO 2. 创建对象

TODO 3. 声明属性,所谓的属性其实就是类中的变量
变量类型 变量名称 = 变量值
属性类型 属性名称 = 属性值

TODO 4. 声明方法
void 方法名(参数){ 功能代码 }

TODO 5. 执行方法
对象.属性
对象.方法名()

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

        // TODO 面向对象
        //所谓的面向对象,其实就是分析问题时,以问题所涉及到的事或物为中心的分析方式
        // 类和对象
        // 类表示归纳和整理
        // 对象就表示具体的事物
        // TODO class(类)
        /*
          类的语法基本语法结构:

          class 类名 {
             特征(属性),
             功能(方法)
          }

          创建对象的语法:
          new 类名();
         */

        // 问题:做一道菜,红烧排骨
        // 类:菜, 对象:红烧排骨

        // TODO 1. 先声明类
        // TODO 2. 创建对象
        // TODO 3. 声明属性,所谓的属性其实就是类中的变量
        //         变量类型  变量名称  = 变量值
        //         属性类型  属性名称  = 属性值
        // TODO 4. 声明方法
        //         void 方法名(参数){ 功能代码 }
        // TODO 5. 执行方法
        //         对象.属性
        //         对象.方法名()

        // 引用数据类型
        Cooking c = new Cooking();
        c.name = "红烧排骨";
        c.food = "排骨";
        c.execute();

        Cooking c1 = new Cooking();
        c1.name = "红烧鱼";
        c1.food = "鲫鱼";
        c1.execute();

    }
}
class Cooking {

    // 特征(属性)
    // 名字
    String name;
    // 菜的类型
    String type = "红烧";
    // 食材
    String food;
    // 佐料
    String relish = "大料";

    // TODO 执行
    void execute() {
        System.out.println("准备食材:" + food);
        System.out.println("准备佐料:" + relish);
        System.out.println("开始烹饪");
        System.out.println(name + "烹饪完成");
    }
}

注意:

在对同一个对象的不同属性进行操作的时候,需要用变量来引用这个对象
        Cooking c = new Cooking()
创建对象,用对象类型的变量来引用它,当处理变量时,处理的其实是引用的对象
基本数据类型不是对象,因此不是引用数据类型
      

  用“+”拼接字符串
        如果需要新菜,用new再次创建即可


类:

结构体,里面包含了属性(特征)和方法(行为) 会有很多的对象。
class : 关键字(全是小写)
类名:类的名称,标识符。遵循规则。一般情况下,类名的首写字母是大写。


对象:

        类的实例化(具象化)

        new 类名(),下括号需要增加。

        new也是关键字,表示创建一个具体的对象,而且,使用一次,创建一次,每次都是全新的。

 一般new出来的对象会赋值给变量,方便重复使用

变量的类型就是对象的类型。

        对象是将内存地址赋值给了变量,所以变量其实引用了内存中的对象,所以称之为引用变量,

        而变量的类型称之为引用数据类型。

特殊的对象:空对象(null),没有引用的对象,称之为空对象, 关键字对象。

所有引用类型变量的默认取值就是null
 

public class java06_lei {
    public static void main(String[] args) {
        Dog d1=new Dog();
        d1.name="小白";

        d1.run();

        Dog d2=new Dog();
        d2.name="小黑";
        d2.run();
    }
}
class Dog{
    String name;
    void run(){
        System.out.println(name+"跑开了");
    }
}

**内存分为三个部分:**栈、堆、元空间

 存储方法、变量 User user

 存储对象 new User()

元空间 存储类的信息

image-20230111213157652

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

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

相关文章

活体识别6:小视科技开源的静默活体检测

说明 该项目为小视科技的静默活体检测项目。开源地址在 https://github.com/minivision-ai/Silent-Face-Anti-Spoofing。 由于不是论文衍生项目&#xff0c;所以只有一个公众号文章的介绍&#xff1a;https://mp.weixin.qq.com/s/IoWxF5cbi32Gya1O25DhRQ 方案详情 该方案是…

【安全】端口复用:远程遥控iptablesSSLH工具

目录 基础知识点 链的概念 表的概念 表链关系 远程遥控iptables进行端口复用 Ⅰ、利用ICMP做遥控开关 ①创建端口复用链 ②创建端口复用规则&#xff0c;将流量转发至 22 端口 ③开启开关&#xff0c;如果接收到一个长为 1139 的 ICMP 包&#xff0c;则将来源 IP 添加到…

使用Oracle VM VirtualBox安装Centos

1.下载安装Oracle VM VirtualBox 2.下载Centos 下载地址 旧版本 3.新建 选择镜像填写账户信息之后&#xff0c;我这边不知道什么原因&#xff0c;并不能完成所有工作&#xff0c;所以我一般不选择 4.选择镜像 5.安装 通过方向键和回车键选择 6.设置 选择中文 等待一些自动…

2023年“华数杯”国际大学生数学建模B题完整思路

2023华数杯如期开赛&#xff0c;本次比赛作为美赛的模拟赛&#xff0c;赛题和比赛时间都和美赛高度相似&#xff0c;因此大家 完全可以当作一次美赛之前的练习赛进行。美赛的发题时间与华数杯一致&#xff0c;都是早晨六点&#xff0c;现已经将机器翻译的初步翻译 结果进行了分…

c语言通讯录max——数据的持久化处理(详解)

用文件操作升级通讯录前言1.实现逻辑2.用哪种文件存储数据2. save_contact函数设计3. load_contact 函数设计5.代码总览contact.hcontact.ctext.c前言 在有关通讯录的上一篇博客中&#xff0c;作者用柔性数组实现了动态改变通讯录占用空间的功能&#xff0c;但是在最后还是留下…

【Go基础】Http编程

文章目录1. http协议1.1 请求方法1.2 URL1.3 协议版本1.4 请求头1.5 请求正文1.6 http response1.7 https2. go语言http标准库3. http router4. 请求校验5. http中间件6. GIN6.1 路由6.2 参数获取6.3 利用postman提交http请求6.4 生成response6.5 参数检验6.6 中间件6.7 会话7.…

互联网分层模型

互联网的逻辑实现被分为好几层。每一层都有自己的功能&#xff0c;就像建筑物一样&#xff0c;每一层都靠下一层支持。用户接触到的只是最上面的那一层&#xff0c;根本不会感觉到下面的几层。要理解互联网就需要自下而上理解每一层的实现的功能。如上图所示&#xff0c;互联网…

55.Isaac教程--Livox 激光雷达

Livox 激光雷达 ISAAC教程合集地址文章目录Livox 激光雷达支持的硬件和固件在桌面上设置和运行示例应用程序在机器人上设置和运行示例应用程序查看正在运行的应用程序将来Livox 激光雷达 Isaac SDK 支持使用 Livox LIDAR&#xff0c;包括兼容的驱动程序和示例应用程序。 支持的…

Android马甲包的那些事儿

制作Android马甲包最简单的方式就是使用 productFlavors 机制。本文就是在productFlavors机制的基础上制作的马甲包&#xff0c;每个马甲只需要在build.gradle文件中配置一下包名、各种key、签名文件配置启动页、logo、app名等资源配置服务器域名、微信分享回调Activity等代码此…

Windows上tensorflow的GPU死活引用不了(tensorflow 2.11无法调用GPU)

tensorflow对于gpu的支持只到2.10&#xff0c;如果你装了最新的tf(2.11)&#xff0c;需要先卸载2.11。 安装代码&#xff1a; pip install tensorflow2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/解决过程&#xff1a; 查看CUDA与cuDNN配套版本&#xff1a; https:/…

解决ModuleNotFoundError: No module named ‘pygame‘问题

一、问题描述在开发环境运行Python的源码游戏时&#xff0c;游戏不能正常运行&#xff0c;且提示&#xff08;ModuleNotFoundError: No module named pygame【没有发现模块错误&#xff1a;没有发现名为pygame的模块】&#xff09;如下图所示&#xff1a;二、问题分析通过查看提…

OpenCV实战——基于均值漂移算法检测图像内容

OpenCV实战——基于均值漂移算法检测图像内容0. 前言1. 均值漂移算法2. 检测图像内容3. 完整代码相关链接0. 前言 直方图反投影的结果是一个概率图&#xff0c;表示在特定图像位置找到给定图像内容的概率。假设我们现在知道一个物体在图像中的大概位置&#xff1b;概率图可用于…

在 Navicat Monitor for MySQL/MariaDB 中配置实例

Navicat Monitor for MySQL/MariaDB 是一个无代理的远程服务器监控工具&#xff0c;它包含的功能可以使监控数据库&#xff08;DB&#xff09;实例发挥最大效用和更轻松。此外&#xff0c;基于服务器的架构使其可以通过网页浏览器从任何地方访问&#xff0c;从而为你提供无障碍…

DaVinci 项目设置:图像缩放调整

项目设置/图像缩放调整Project Settings/Image Scaling图像缩放调整 Image Scaling选项卡可用于设置片段在输入、输出时的缩放及相应的插值算法。图像缩放调整Image Scaling主要用于选择缩放处理的插值方法&#xff0c;也可用于载入输入、输出缩放调整的预设。缩放过滤器Resize…

特别提醒|2023年考PMP需关注的5大问题

目前知道的是2023年考试时间为3月、5月、8月、11月&#xff0c;但是3月不给新报名&#xff0c;需要报名的话&#xff0c;就是报5月的考试了。当然有的伙伴会有一些小问题&#xff0c;这里给大家整理了一些基本的问题给大家回答一下&#xff0c;大家如果还有其他的问题可以评论提…

[Flink] 容错机制与状态一致性机制

文章目录1.状态一致性1.1 状态一致性分类2.一致性检查点 checkpoint3.端到端&#xff08;end-to-end&#xff09;状态一致性4. 端到端的精确一次&#xff08;exactly-once&#xff09;保证4.1 幂等写入4.2 事务写入5.FlinkKafka 端到端状态一致性的保证5.1 Exactly-once 两阶段…

常见智力题汇总(建议收藏)

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; 智力题 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最…

Web 前端开发技术 —— JavaScript

Web 前端开发技术 —— JavaScript 总结 JavaScript 内容&#xff01; 文章目录Web 前端开发技术 —— JavaScript一、js 的引用方式与执行顺序1、引用方式在标签中直接写 js 代码复用 js 代码通过 import 方式2、执行顺序3、html、css、js 三者之间的关系二、变量与运算符变量…

C++之函数重载

文章目录前言一、函数重载二、如何支持函数重载&#xff08;C支持函数重载的原理--名字修饰(name Mangling)&#xff09;三、参数有什么区别才能构成函数重载1.参数个数不同2.参数类型不同3.参数顺序不同四、返回值类型不同是否可以构成函数重载总结前言 我们知道在使用C语言进…

jmh的一些作用

目录说明说明 jmh可以用来java基准测试&#xff0c;性能测试用这个测比较标准&#xff0c;可以设置预热、迭代次数&#xff0c;对某块代码精准测试&#xff0c;耗时时间单位有毫秒、纳秒等。 就先说到这\color{#008B8B}{ 就先说到这}就先说到这 在下Apollo\color{#008B8B}{在下…