一个月学会Java 第2天 认识类与对象

news2024/11/28 2:49:45

Day2 认识类与对象

第一章 初识类

经过一个程序的编写,应该对程序的结构有点好奇了吧,如果你有基础,接下来的肯定非常的易懂,如果你没有基础也没有关系,反复琢磨一下也就懂了😆

我们来重复一下第一个程序

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

我们以空格划分多个单词,比如第一行的public就是第一行的第一个,class就是第一行的第二个单词,第二行的public就是第二行的第一个单词,如此。

首先我们看类名也就是class后面跟着的单词也就是第一行第三个单词,这个尤为的重要,比如我的文件名并不叫做Hello.java
那我这样编译就会出问题,即使我是hello.java
也会出问题,因为Java是一个对大小写敏感的程序,和Python、C、C++、JavaScript等等是一样的。对大小写不敏感的有各种数据库啊、还有操作系统的文件系统,比如linux或者windows或者是macOS等等,这是第一点。

第二点,公有类名要与文件名一致。没错,你一个Java文件内可以有多个类,但是公有类
只能有一个,就是带public class [类名/文件名]里面的类名,然后你还可以并行很多类像这样

命名规则的话查看normal
solutions.md里面就行

//唯一的public类,类名必须和文件名一致,不然就会报错
public class Hello {
    //我是单行注释使用两个斜杠就可以使用注释了
    //是只会在看代码的阶段存在,编译后并不存在
    //但是我建议删掉注释,因为我打的是中文可能会出现编码问题
    //如果你会改编码的话那就是最好的,如果你不会的话删掉就不会出问题了
    //或者你可以去看看normal solutions.md那个文件
    public static void main(String[] args) {
        /*
                这个是多行注释使用杠星星杠的方式框柱
         */
        System.out.println("Hello world");
    }
}

//非public类可以无限多
class ABC {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

//只不过每个类被编译后又会出现一个新的字节码文件也就是.class文件
class QWE {

}

在这里插入图片描述

如果看了第一天全文字还没被劝退说明你还是有耐心的,可以真的开始学习Java了,

但是这里也很明显因为有三个类虽然放在了一起但是编译出来其实还是三个文件,就是说我其实直接再开两个Java文件也是一样的。这里我们在ABC
类和Hello类中都有打印,我们来运行一下

在这里插入图片描述

这里的信息也告诉了我们,我们需要main这么一个“方法”才可以运行,那就说明大家想要运行程序必须要有这么一个main
方法,只需要照着写其实就可以了public static void main(String[] args)

然后想要打印信息只需要把信息放到System.out.println("");的双引号中间即可打印对应的信息。

第二章 数据类型

每个语言都有数据类型,像Java、C、C++、C#、Python这些都是强类型语言,JS(JavaScript)、vb、php这些就是弱类型语言。
但是强类型语言也分明显与不明显,比如Java、C、C++、C#这些就需要先声明再使用,然后Python是直接赋值但是底层类型还都是规定好的,整形就是整形,浮点就是浮点,字符串就是字符串。
弱类型语言就是要声明也就只是声明有这个变量并没有规定是什么数据类型。

Java的数据类型有四种,每种又有其他的分类

  • 整形
    • byte 1字节
    • short 2字节
    • int 4字节
    • long 8字节
  • 浮点
    • float 4字节
    • double 8字节
  • 布尔
    • boolean 1字节
  • 字符
    • char 2字节

这些数据类型拿来使用的时候(声明变量)都是做关键字的。就比如public,class,static,void
这在上面变成了特殊颜色的就是关键字,在github上的配色方案应该是红色,然后刚刚上面说的8个数据类型也都是关键字。

先来讲讲字节是什么(懂的可以跳过),1个字节 = 8,一个位就是2进制的数,比如0000 0001就是1,0000 0010
就是2,0000 0100
就是4,0000 1000
就是8,如果不会的但是细心的你会发现这不就是2的0到3次幂吗,没错就是这样,通过这样的排列组合在到达0001 0000
的16之前,其实后四个数就能表示0 ~ 15,这就是二进制,然后8个为一个字节
,相当于byte一个字节那就可以装下256个数,但是要表示负数和正数和0,所以范围是-128 ~ 127,比如int是4个字节也就是32位,那他的最小就是-2^31,最大就是
2^31 - 1,因为需要一个数去表示0。 浮点又是其他的方式存储,布尔又是只有表示正确的true和表示错误的false,字符又是根据unicode进行存储。

public class Hello {
    public static void main(String[] args) {
        int i = 50; //变量的声明并赋值 = 号是赋值
        System.out.println(i);
    }
}

在这里插入图片描述

以上就是声明变量,通过关键字 变量名的方式去声明并赋值int i = 50,在代码里面单个=的作用就是赋值
然后可以通过打印的方式来具现化,自然我们也可以做运算

public class Hello {
    public static void main(String[] args) {
        int i = 50;
        int i2 = 100;
        //在打印之中也是可以运算的
        System.out.println(i + i2);
    }
}

在这里插入图片描述

自然我们也可以拼接字符串来说明信息比如这样,这个时候就要说+号的不同作用了,在与字符串和任何值使用+
的时候他就会变成拼接,在数与数之间就是运算,自然在字符串和字符串中间也是拼接

public class Hello {
    public static void main(String[] args) {
        int num = 100;
        int num2 = 1000;
        int num3 = 500;
        //自然也有拼接
        System.out.println("num:" + num + num3 + " num3 + num2: " + (num2 + num3));
    }
}

在这里插入图片描述

明显能看出其中的端倪,num + num3并没有相加而是拼接在了一起,而后面的(num2 + num3)
确实是相加在了一起,这就是区别,如果想要运算那就加上括号,如果要拼接那就使用和字符串相加的方式,这里也能清楚看到因为运算是从左到右的,所以他是先把"num:"
这个字符串和num拼接,所以变成了字符串"num:100"再下去计算也只是拼接而已。

当然我们的变量声明可不只是能在main方法里的,还可以在main的外面进行声明,这就要讲到下一个知识点了对象

第三章 初识对象

这个其实思维和变量是一样的,也是需要声明并赋值,只不过他是这个变量里面还有东西需要使用.去获取,然后从数据类型扩展到类名做声明

public class Hello {
    int i = 50;     //这个就是全局变量的声明并赋值

    public static void main(String[] args) {
        //如果我想要使用这个在main之外但是在Hello类之内的i话
        //那就需要创建这个类的对象像这样
        Hello h = new Hello();  //这就是创建对象和变量差不多
        int i1 = 50000;     //实际上是很像的
        //对象就相当于是把我们的这个Hello类拿过来当变量了
        //然后我们可以使用.的这个方式去获取main之外Hello之内的东西
        System.out.println(h.i);
        //自然我也可以更改掉这个i就像这样
        System.out.println("change h.i");
        h.i = 500;
        System.out.println(h.i);
    }
}

在这里插入图片描述

如果你再创建一个对象hello,他的i自然还是50,自然也是独立存在,你变更的只有h里的i,

public class Hello {
    int i = 50;

    public static void main(String[] args) {
        Hello h = new Hello();
        int i1 = 50000;
        System.out.println(h.i);
        System.out.println("change h.i");
        h.i = 500;
        System.out.println(h.i);
        Hello hello;    //我先声明
        hello = new Hello();//后赋值
        System.out.println(hello.i);
    }
}

在这里插入图片描述

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

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

相关文章

Vivado - JTAG to AXI Master (DDR4)

目录 1. 简介 2. JTAG 直接操作 DDR4 2.1 Block Design 2.2 AXI SmartConnect 2.3 DDR4 MIG 2.3.1 时钟和复位 2.3.2 AXI Slave 接口 2.4 XDC 约束 2.5 TCL 代码 2.5.1 写入 DDR4 2.5.2 读取 DDR4 3. HLS IP 操作 DDR4 3.1 Block Design 3.2 HLS IP 3.2.1 HLS 代…

TypeScript面向对象 01

使用class关键字来定义一个类。对象中主要包含了两个部分:属性和方法。 class Person {// 定义实例属性name:string glm;age:number 1234; } const a new Person(); console.log(a.name);在属性前使用static关键字可以定义类属性(静态属性&#xff0…

Sebastian Raschka 最新博客:从头开始用 Llama 2 构建 Llama 3.2

最近已有不少大厂都在秋招宣讲了,也有一些在 Offer 发放阶段。 节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…

自动驾驶-问题笔记-待解决

参考线的平滑方法 参考线平滑算法主要有三种: 离散点平滑;螺旋曲线平滑;多项式平滑; 参考链接:参考线平滑 对于平滑方法,一直不太理解平滑、拟合以及滤波三者的作用与区别; 规划的起点&#x…

代码随想录一刷完结

非常偶然的机会让我看到这个算法训练营的存在,虽然我也没有多大的动力,但当时就觉得没什么事情,想着刷刷题,为以后找工作打打基础。 收获 提示:在刷题过程中的收获 第一次使用CSDN记录,每次有别人点赞和收…

【React】事件机制

事件机制 react 基于浏览器的事件机制自身实现了一套事件机制,称为合成事件。比如:onclick -> onClick 获取原生事件:e.nativeEvent onClick 并不会将事件代理函数绑定到真实的 DOM节点上,而是将所有的事件绑定到结构的最外层…

【LeetCode: 134. 加油站 | 贪心算法】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

AI模型部署初认识

AI部署这个词儿大家肯定不陌生,可能有些小伙伴还不是很清楚这个是干嘛的,但总归是耳熟能详了。 近些年来,在深度学习算法已经足够卷卷卷之后,深度学习的另一个偏向于工程的方向–部署工业落地,才开始被谈论的多了起来…

C语言 | Leetcode C语言题解之第456题132模式

题目&#xff1a; 题解&#xff1a; int upper_bound(int* vec, int vecSize, int target) {int low 0, high vecSize - 1;if (vec[high] > target) {return -1;}while (low < high) {int mid (high - low) / 2 low;int num vec[mid];if (num > target) {low m…

IDEA基础开发配置以及和git的联动

1.1方向一&#xff1a;工具介绍 我今天要介绍的就是学习Java大部分情况下都会选择的一款工具-----IDEA&#xff0c;这个和我们熟悉的这个pycharm一样&#xff0c;都是属于这个Jetbrains公司的&#xff0c;虽然我对于这个并不是很了解&#xff0c;但是确实知道一点&#xff0c;…

静止坐标系和旋转坐标系变换的线性化,锁相环线性化通用推导

将笛卡尔坐标系的电压 [ U x , U y ] [U_x, U_y] [Ux​,Uy​] 通过旋转变换(由锁相环角度 θ P L L \theta_{PLL} θPLL​ 控制)转换为 dq 坐标系下的电压 [ U d , U q ] [U_d, U_q] [Ud​,Uq​]。这个公式是非线性的,因为它涉及到正弦和余弦函数。 图片中的推导过程主要…

一款基于 Java 的可视化 HTTP API 接口快速开发框架,干掉 CRUD,效率爆炸(带私活源码)

平常我们经常需要编写 API&#xff0c;但其实常常只是一些简单的增删改查&#xff0c;写这些代码非常枯燥无趣。 今天给大家带来的是一款基于 Java 的可视化 HTTP API 接口快速开发框架&#xff0c;通过 UI 界面编写接口&#xff0c;无需定义 Controller、Service、Dao 等 Jav…

使用 Python 进行大规模数据处理

在 Python 中&#xff0c;处理大量数据时&#xff0c;效率是非常重要的。当你有一个包含 100 万个元素的列表&#xff0c;每个元素都是一个字典&#xff0c;并且需要将它们转换为 DataFrame 时&#xff0c;Pandas 是一个很好的工具。Pandas 是 Python 数据处理和分析的强大库&a…

一键生成PPT的AI工具-Kimi!

一键生成PPT的AI工具-Kimi&#xff01; 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 &#x1f600;大家好&#xff01;我是向阳&#x1f31e;&#xff0c;一个想成为优秀全栈开发工程师的有志青年&#xff01; &#x1f4d4;今天不来讨论前后…

yolov5-7.0模型DNN加载函数及参数详解(重要)

yolov5-7.0模型DNN加载函数及参数详解&#xff08;重要&#xff09; 引言yolov5&#xff08;v7.0&#xff09;1&#xff0c;yolov5.h(加载对应模型里面的相关参数要更改)2&#xff0c;main主程序&#xff08;1&#xff09;加载网络&#xff08;2&#xff09;检测推理&#xff0…

超酷!任务栏美化 给任务栏添加一个好看的时钟

如何给任务栏美化&#xff1f;今天我们这个主题就是帮大家美化任务栏&#xff0c;估计很多伙伴都用过任务栏美化工具。任务栏美化是非常有个性化的功能&#xff0c;不但可以让你的任务栏变得漂亮&#xff0c;还可以增加一些非常有创意的功能&#xff0c;比如今天小编要给大家带…

文件共享软件推荐,哪些工具最实用?

预计到2025年文档共享市场将增长至近100亿美金。文件共享软件助力跨区域协作&#xff0c;推荐ZohoWorkDrive、GoogleDrive、DropboxBusiness。软件设计直观&#xff0c;上手易&#xff0c;可保障数据安全&#xff0c;选择时需考虑企业规模、需求及预算。 一、什么是文件共享软件…

linux部署NFS和autofs自动挂载

目录 &#xff08;一&#xff09;NFS&#xff1a; 1. 什么是NFS 2. NFS守护进程 3. RPC服务 4. 原理 5. 部署 5.1 安装NFS服务 5.2 配置防火墙 5.3 创建服务端共享目录 5.4 修改服务端配置文件 (1). /etc/exports (2). nfs.conf 5.5 启动nfs并加入自启 5.6 客户端…

陀螺仪LSM6DSV16X与AI集成(14)----上报匿名上位机

陀螺仪LSM6DSV16X与AI集成.14--上报匿名上位机 概述视频教学样品申请源码下载硬件准备上位机通讯陀螺仪工作方式欧拉角数据的转换数据帧填充校验和计算数据发送演示开启INT中断中断读取传感器数据主程序演示 概述 本文介绍了如何将 LSM6DSV16X 传感器的姿态数据通过匿名通信协…

【Android】Handler消息机制

文章目录 前言概述核心组件概述Android消息机制概述 Android消息机制分析ThreadLocal的工作原理ThreadLocal基础ThreadLocal实现原理 MessageQueueLooperHandler的工作原理总结 前言 本文用于记录Android的消息机制&#xff0c;主要是指Handler的运行机制。部分内容参考自《An…