Java对象、类、数据类型、变量类型

一、Java对象和类:

        对象是类的一个实例,有状态和行为。类是一个模版,描述一类对象的行为和状态。对象的状态就是属性,行为通过方法体现。方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

        一个类可以包含以下类型变量:局部变量——在方法、构造方法或者语句块中定义的变量被称为局部变量,变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁;成员变量——成员变量是定义在类中,方法体之外的变量,这种变量在创建对象的时候实例化,成员变量可以被类中方法、构造方法和特定类的语句块访问;类变量——类变量也声明在类中,方法体之外,但必须声明为 static 类型。

        每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。示例:

public class Puppy{

public Puppy(){

}

public Puppy(String name){

// 这个构造器仅有一个参数:name

}

}

        对象是根据类创建的,在Java中,使用关键字new来创建一个新的对象。创建一个对象需三步:一、声明:声明一个对象,包括对象名称和对象类型;二、实例化:使用关键字new来创建一个对象;三、初始化:使用new创建对象时,会调用构造方法初始化对象。示例:

public class Puppy{

public Puppy(String name){

//这个构造器仅有一个参数:name

System.out.println("company : " + name );

}

public static void main(String[] args){

// 下面的语句将创建一个Puppy对象

Puppy myPuppy = new Puppy( "JD" );

}

}

 访问实例变量和方法:

/* 实例化对象 */

Object referenceVariable = new Constructor();

/* 访问类中的变量 */

referenceVariable.variableName;

/* 访问类中的方法 */

referenceVariable.methodName();

源文件声明原则:

● 一个源文件中只能有一个 public 类;

● 一个源文件可以有多个非 public 类;

● 源文件的名称应该和 public 类的类名保持一致。

● 如果一个类定义在某个包中,那么 package 语句应该在源文件的首行。

● 如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面。

● import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

Java包主要用来对类和接口进行分类。

Import语句用来提供一个路径,使得编译器可以找到某个类。

二、Java基本数据类型:

Java两大数据类型:内置数据类型和引用数据类型。

4.1、内置数据类型:

Java语言提供了8种基本类型:6种数字类型(4个整数型、2个浮点型)、1种字符类型和1中布尔型。

1、byte:byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是 -128(-2^7)最大值是 127(2^7-1);默认值是 0;byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

2、short:short 数据类型是 16 位、有符号的以二进制补码表示的整数最小值是 -32768(-2^15);最大值是 32767(2^15 - 1);Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;默认值是 0;

3、int:int 数据类型是32位、有符号的以二进制补码表示的整数;最小值是 -2,147,483,648(-2^31);最大值是 2,147,483,647(2^31 - 1);一般地整型变量默认为 int 类型;默认值是 0 ;

4、long:long 数据类型是 64 位、有符号的以二进制补码表示的整数;最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);默认值是 0L;

5、float:float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;float 在储存大型浮点数组的时候可节省内存空间;默认值是 0.0f;

6、double:double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;浮点数的默认类型为 double 类型;默认值是 0.0d;

7、boolean:boolean数据类型表示一位的信息;只有两个取值:true 和 false;默认值是 false;

8、char:char 类型是一个单一的 16 位 Unicode 字符;最小值是 \u0000(十进制等效值为 0);最大值是 \uffff(即为 65535);char 数据类型可以储存任何字符。

数据类型

默认值

byte

0

short

0

int

0

long

0L

float

0.0f

double

0.0d

char

'u0000'

String (or any object)

null

boolean

false

4.2、引用类型:

引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型。变量一旦声明,类型不能被改变。对象、数组都是引用数据类型;所有引用类型的默认值都是null。

4.3、Java常量:

常量在程序运行时是不能被修改的。在Java中使用final关键字来修饰常量。当使用字面量的时候,前缀0表示8进制;前缀0x表示16进制。

Java语言支持一些特殊的转义字符序列:

符号

字符含义

\n

换行 (0x0a)

\r

回车 (0x0d)

\f

换页符(0x0c)

\b

退格 (0x08)

\0

空字符 (0x0)

\s

空格 (0x20)

\t

制表符

\"

双引号

\'

单引号

\\

反斜杠

\ddd

八进制字符 (ddd)

\uxxxx

16进制Unicode字符 (xxxx)

整型、常量、字符型数据可以混合运算,在运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级:

数据类型转换规则:不能对boolean类型进行类型转换;不能把对象类型转换成不相关类的对象;容量大的类型转换为容量小的类型必须使用强制类型转换;转换过程中可能导致溢出或损失精度;浮点数到整数的转换是通过舍弃小数得到,不是四舍五入。

二、Java变量类型:

        在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式:type identifier [ = value][, identifier [= value] ...] ,其中:type --数据类型; identifier--是变量名,使用逗号“,”隔开。

Java语言支持的变量类型:局部变量、成员变量、静态变量、参数变量。

5.1、局部变量:

局部变量声明在方法、构造方法或者语句块中,执行完后,变量将会被销毁。局部变量必须在使用前声明,并且不能被访问修饰符修饰。局部变量只在声明它的方法、构造方法或者语句块中可见,不能被其他方法或代码块访问。局部变量是在栈上分配的。局部变量被声明后,必须进行初始化,才可以使用。

5.2、成员变量:

成员变量声明在一个类中,但在方法、构造方法和语句块之外。当一个对象被实例化后,每个成员变量的值就跟着确定。成员变量在对象创建时创建,在对象被销毁时销毁。成员变量的值应该至少被一个方法、构造方法或语句块引用。成员变量可以声明在使用前或使用后。访问修饰符可以修饰成员变量。成员变量对于类中的方法、构造方法或者语句块是可见的。一般应将成员变量设为私有。成员变量具有默认值。成员变量可以直接用过变量名访问。

5.3、静态变量:

Java中的静态变量是指在类中定义的一个变量,它与类相关而不与实例相关,即无论创建多少个类实例,静态变量在内存中只有一份拷贝,被所有实例共享。静态变量在类加载时被创建,在整个程序运行期间都存在。

静态变量的定义方式是在类中使用static关键字修饰变量。静态变量的访问可以通过类名来访问也可通过实例名来访问。

静态变量的应用场景:存储全局状态或配置信息;计数器或同级信息;缓存数据或共享资源;工具类的常量或方法;单例模式中的实例变量。

5.4、参数变量:

参数变量是指在方法或构造函数中声明的变量,用于接收传递给方法或构造函数的值。参数变量只在方法或构造函数被调用时存在,并且只能在方法或构造函数内部使用。示例:

public class RunTest {
     public static void main(String[] args) {
        int a = 10, b = 20;
        swap(a, b); // 调用swap方法
        System.out.println("a = " + a + ", b = " + b); // 输出a和b的值
     }
     public static void swap(int x, int y) {
        int temp = x;
        x = y;
        y = temp;
     }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上传项目文件到Github,并解决fatal: unable to access问题,100%成功

一、背景 Github我们用的最多的就是clone别人的代码,但有时我们也希望上传自己的项目或代码。但github上传文件还是比较复杂的,中间会有许许多多奇怪的问题,因此记录一下其过程。 二、Github上传文件 1. 申请Github账号 这里默认你已经有…

Vue指令修饰符、v-bind、v-model、computed计算属性、watch侦听器

前言 持续学习总结输出中,Vue指令修饰符、v-bind、v-model、computed计算属性、watch侦听器 一、指令修饰符 1.什么是指令修饰符? 所谓指令修饰符就是通过“.”指明一些指令后缀 ,不同的后缀封装了不同的处理操作 —> 简化代码 2.按键…

[每周一更]-(第72期):Docker容器瘦身方式

Docker清理缓存操作 在构建测试的过程中,由于是自家小服务器,资源紧张,发现磁盘一直爆满,删除一些大镜像还是会占满的情况,就想到是不是也是缓存问题。 经过查询确实是build过程中的缓存启发的占用问题。 因此引出以下…

【机器学习基础】对数几率回归(logistic回归)

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…

Java学习之路 —— 多线程

文章目录 1. 线程创建方式1.1 继承Thread1.2 声明一个实现Runnable接口的类1.3 利用Callable接口、FutureTask类来实现 2. 线程同步2.1 同步代码块2.2 同步方法2.3 Lock锁 3. 线程同步4. 线程池 1. 线程创建方式 1.1 继承Thread 定义子类,继承Thread,创…

系列一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新?

一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新? JVM是Java虚拟机的意思。它是建立在操作系统之上的,由类加载器子系统、本地方法栈、Java栈、程序计数器、方法区、堆、本地方法库、本地方法接口、执行引擎组成。 (1&#xff0…

Python系列:如何提高python程序代码的健壮性

前言 在编程的时候,我们难免会遇到一些不可靠的情况,比如网络请求失败,数据库连接超时等等。这些不确定性会让我们的程序容易出现各种错误和异常。那么如何来增加程序的容错性和健壮性呢? 可能大多数人会想到使用try except来进行异常捕捉进行失败重试(Retry)。虽然try-esc…

使用重建大师进行重建时,为什么引擎信息中显示只有一台主机能运行?

答:停止的引擎可以右键开始引擎,红字的可以看一下提示哪个文件夹没有权限,调整一下路径。由于截图不全,目前可以判断的就是以上解决办法。

音视频转换软件Permute mac中文板特点介绍

Permute mac是一款Mac平台上的媒体格式转换软件,由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式:支持几乎所…

Postman启动问题:Could not open Postman

Postman启动问题:Could not open Postman 状态,在单击Postman之后一直在转圈圈,无法正常启动。 细心的朋友会发现,右下角 会经常出现防火墙关闭等提示信息,表示该程序,在向外链接。 Error Could not open…

仅需三行代码! C# 快速实现PDF转PPT

一般在会议、教学或培训活动中,我们都会选择PPT文档来进行内容展示。与PDF文档相比,PPT文档具有较强的可编辑性,可以随时增删元素,并且还可以设置丰富多样的动画效果来吸引观众注意。那么如何通过C#将PDF文档转为PPT文档呢&#x…

射频与微波综合测试仪-4958手持式微波综合测试仪

4958 微波综合测试仪 频率范围:1MHz~20GHz 4958手持式微波综合测试仪测量频率范围可达1MHz~20GHz,集电缆和天线驻波比测试、不连续点故障定位测试、插入损耗和增益测试、频谱分析、功率测量等多种功能于一体,携带方便&…

Spring Boot中使用MongoDB完成数据存储

我们在开发中用到的数据存储工具有许多种,我们常见的数据存储工具包括: 关系性数据库:使用表格来存储数据,支持事务和索引。(如:MySQL,Oracle,SQL Server等)。NoSQL数据…

【强化学习】时间循环最优决策:原理与Python实战

Python 如何在时间循环里最优决策?时间旅行和平行宇宙时间旅行引发的悖论强化学习策略梯度算法代码案例代码推荐阅读理论完备:实战性强:配套丰富: 如何在时间循环里最优决策? 时间循环是一类热门的影视题材&#xff0…

电源线虚接,导致信号线发烫

音频板的信号是经过隔直电容接到音频板的。

信创环境下高级威胁攻击层出不穷,信息化负责人该如何增强对抗与防御能力?

11月15日,以“加快推进智慧校园建设 赋能为党育才为党献策”为主题的2023年华东地区党校(行政学院)信息化和图书馆工作高质量发展专题研讨班顺利举办。 作为国内云原生安全领导厂商,安全狗受邀出席活动。 厦门服云信息科技有限公司…

【技术分享】EIGRP stub实验

【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等https://xmws-it.blog.csdn.net/article/details/117297837?spm1001.2014.3001.5502【微/信/公/众/号:厦门微思网络】 拓扑图: R1配置: route…

Android源码分析 - Service启动流程

作者:dreamgyf 这次我们就来讲讲四大组件之一的Service是如何启动和绑定的 流程图 在查阅资料的过程中,我发现有些博主会将梳理好的流程图贴在开头,我觉得这样有助于从宏观上去理解源码的整个流程和设计理念,所以以后的文章我都…

【23真题】难!985难度第一梯队!

今天分享的是23年华南理工大学811的信号与系统试题及解析 本套试卷难度分析:22年华南理工大学811考研真题,我也发布过,若有需要,戳这里自取!本套试题难度中等偏上,只有十道大题,考察大家的综合…

袭击大型银行在美子公司的勒索元凶—LockBit,「诺亚」实战出击主动防御

“让勒索软件再次伟大” 2022年 最活跃猖獗 的勒索软件 ——LockBit 已在全球范围内造成严重破坏 世界知名企业和机构接连受创 11月10日,LockBit再次行凶作案 某大型银行在美全资子公司遭攻击 导致部分金融服务业务中断 美国国债市场交易受此影响&#xff01…