05 变量、常量、数据类型 v1.0

本贴最后更新于 2567 天前,其中的信息可能已经时移俗易

1.关键字

-- 计算机语言里事先定义的,有特别意义的标识符,有时又叫保留字

Java 中的关键字

--对 Java 的编译器有特殊的意义,用来表示数据类型、程序结构等

--关键字不能用作变量名、方法名、类名、包名和参数。

数据类型:

boolean int long short byte float double char class interface

流程控制:

if else do while for switch case default break continue return try catch finally

修饰符:

public protected private final void static strictfp abstract transient

synchronized volatile native

动作:

package import throw throws extends implements this super instanceof new

保留字:

true false null goto const

关键字的注意事项

-- 所有 Java 关键字都是小写的

-- goto 和 const 虽然从未使用,但是也被作为 Java 的关键字保留

-- true,false 用在特殊的用途,但是不是 Java 的关键字

2.使用变量的步骤:

第一步:声明变量,即“根据数据类型在内存申请空间”

数据类型 变量名;

例如:int money;

第二步:赋值,即“将数据存储至对应的内存空间”

变量名 = 数值;

例如:money = 1000 ;

第一步和第二步可以合并

数据类型 变量名 = 数值;

例如:int money = 1000;

第三步:使用变量,即“取出数据使用”

变量命名规范:

简短且能清楚地表明变量的作用(见名之意),通常第一个单词的首字母小写,其后单词的首字母大写。

例如:myScore

字符串 String 类型变量的值是以双引号引起来的,字符 char 类型的值是单引号引起来的。

3.常量:

--代表程序运行过程中不能改变的值

作用:

--代表常数,便于程序的修改(例如:圆周率的值)

--增强程序的可读性

(例如:常量 UP、DOWN、LEFT 和 RIGHT 分 别代表上下左右,其数值分别是 1、2、3 和 4)

规范:

--常量名大写;多个单词全部大写,并以下划线分割,如 NAME, ROLE_NAME

声明常量并赋值:

final 数据类型 常量名称 = 值;

例如: final double PI = 3.1415926; //声明一个 double 常量并赋值

final String NAME = "JACK"; //声明一个 String 类型的常量并赋值

同时声明多个常量并赋值,多个常量之间以逗号 分隔

final 数据类型 常量名称 1 = 值 1, 常量名称 2 = 值 2,…常量名称 n = 值 n;

例如: //同时声明多个常量,以逗号分隔

final char MALE='M',FEMALE = 'F';

注意:Java 允许常量先声明后赋值;但是只能赋值一次

//常量只能赋值一次

final int num; //声明一个常量

num = 25; //首次给常量赋值

num =36; //再次给常量赋值则不允许的!

编辑器报错:The final local variable num may already have been assigned

4.java 分割符的种类

分号-“;”;逗号-“,”;空格-“ ”;圆点-“.”;花括号-“{}”

Java 分割符的作用

分号:语句必须以分号作为结束标记,for 循环中使用分号来分割不同的成份

逗号:用于方法中多个参数列表的分割,或者用于声明语句中同时声明多个属性或局部变量时起分割作用

空格或换行:Java 代码中各个组成部分之间可以插入任意数量的空格或换行---格式化代码

圆点:用于访问对象成员(属性或方法)标明调用或者隶属关系,其格式为“对象名.对象成员”

花括号:用于构造语句块---语句块

5.标识符

Java 所有的组成部分都需要有名字,为各种变量、常量、方法、类、接口等起的名字称为标识符(起别名)

标示符的命名规则

应以字母、下划线、美元符号开头(a-z/A-Z、_、$)

后跟字母、下划线、美元符号或数字

标示符的大小写敏感

标示符不能与关键字、保留字重名

见名之意。

  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary

6.数据类型

一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称

按照对数据类型的使用和约束程度来划分

强类型语言(Strong Typed languages) ----典型代表 Java 语言

每个变量都要有确定的类型

变量要先声明后使用

弱类型语言(Weakly Typed languages) ----典型代表 JavaScript

每个变量的类型是可以变化的

变量可以不声明就使用

5.Java 数据类型图示:

public final class String-----说明字符串是属于引用类型的 class!

6.基本类型

Java 中的基本类型的变量不是对象,它只能保存单一的值被称为原始类型、或简单类型

Java 中四类/八种基本数据类型

整数型:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

7.整数型

用于保存整数信息,java 提供了四种不同的整数类型,各有固定的表示范围和字段长度,不受具体操作系统的影响,以保证 Java 的可移植性

类型说明表

| 类型 | 占有存储空间 | 表示范围 |
| byte | 1 字节 | -128—127 |
| short | 2 字节 | -215—215-1 |
| int | 4 字节 | -231—231-1 |
| long | 8 字节 | -263—263-1 |

整数型字面量表示形式

-十进制:如:78,-65,0

-八进制:以 0 开头。如 023

-十六进制:以 0x 或 0X 开头。如 0x35

-默认的整数型字面量为 int 类型,声明为 long 类型可以在字面量后面加 l 或者 L,建议使用大写的 L 避免引起误解。

8.浮点型

包括 float 和 double 两种类型,分别用于保存单精度和双精度的浮点数

类型说明表

| 类型 | 占有存储空间 | 表示范围 |
| float | 4 字节 | -3.403E38—3.403E38 |
| double | 8 字节 | -1.798E308—1.798E308 |

浮点型字面量表示形式

-十进制:必须有小数点,也可以采用科学计数法表示。如:5.75,8.54e5,0.34e-8

-十六进制:从 JDK5.0 开始引入,十六进制浮点数只能采用科学计数法表示。

如:0x3.6p5=(3160+616-1)*25

-默认的浮点型字面量为 double 类型,声明为 float 类型可以在字面量后面加 f 或 F

9.字符型

char 类型用来表示字符类型,Java 语言采用 16 位 Unicode 编码保存字符

字符型字面量的表示形式

1、使用单引号括起来的单个字符。如:char ch=‘b’;

2、使用 16 进制的 Unicode 编码形式表示。如:char ch=“\u0045”;

3、使用转义字符”\”来将其后面的字符转换位其他的含义。

如:char ch=“\n”

10.布尔型

-逻辑运算和程序流程控制中用来表示两种状态的逻辑值,代表特定条件的成立与否

布尔型字面量的表示形式

-只允许两个值 true 和 false,不能用 0 和非 0 来替代 true 和 false

11.类型转换

将数值从一种类型转换为另一种类型的操作,我们称为类型转换

自动类型转换---小范围向大范围转没有问题

-与上图中箭头指向相同的数值类型转换会在表达式中自动完成

short price2 = (short)236;

//基本数据类型转换,小 short 转大 long,直接自动转换

long testlong;

testlong = price2;

强制类型转换---大范围向小范围转换可能会造成丢失精度甚至是错误

-与上图中箭头指向相反方向的数值类型转换需要强制进行,强制类型转换一般会造成数值的精度损失。

-强制类型转换语法格式: (目标数据类型)< 表达式 >

int money = 1000; // 声明并赋值

//基本数据类型转换,大 int 转小 short 需要强制转换

short price;

price = (short) money;

12.引用数据类型

Java 语言中出来 8 种基本数据类型以外,其他的数据类型统称位引用类型(Reference Type)。具体包括:类,接口,数组,枚举和注解类型

引用类型的数据:以对象的形式存在

引用类型的变量:它的值是某个对象的句柄/地址,而不是对象本身

声明引用类型变量时,系统只为该变量分配引用的空间,并未创建对象;

只有使用 new 运算符调用类的构造方法时才会创建对象,并返回该对象的句柄

13.一个引用类型的类,通常具有:

A.构造方法;----用于构造该类的一个实例对象;

B.成员属性;----用于描述该对象的特征、特点、特性等;

成员属性,又分为成员变量、成员常量;

C.成员方法;----用于体现该对象的行为、功能、作用等;

D.静态 static 的类层次的属性;

E.静态 static 的类层次的方法。

14.构造方法和普通方法的区别:

A.普通方法的方法名前面有返回数据类型的声明,构造方法没有;

B.构造方法的方法名和类名必须完全一致,不一致不是构造函数,有返回类型声明就不是构造方法;

C.构造方法没有返回数据类型的声明,却会返回类类型的一个实例对象;

15.变量(Variable) ---用于记录数值,并可以改变数值的数据

变量的组成:变量=变量名 + 变量值

变量名:用于标记一段特定的存储空间

变量值:以二进制的形式保存在存储空间中,且可以被访问和修改的数值

变量的分类

按变量所属的数据类型分类

基本类型

引用类型

按变量声明的位置分类

局部变量——方法或者语句块中声明的变量

成员变量——方法外部、类的内部声明的变量

16.变量的声明和初始化:

声明变量:Java 是强类型语言,变量必须先声明后使用。声明变量即为变量分配相应的存储空间

初始化变量:为内存中已经存在的变量赋于初始值

语法格式:[] [=defaultValue1][, [=defaultValue2]]…;

例如:public int age =18,hight=175;

[]中括号的内容表示可选的。

17.变量的作用域和生存期:

变量的作用域:变量的作用域也称为变量的作用范围,即一个变量在多大的范围内可以使用

成员变量:作用域与其所属对象的作用域相同

局部变量:作用域就是它所在的方法或语句块

变量的生存期:变量的生存期就是变量的生存时间,即变量从创建到销毁所经历的时间

成员变量:成员变量的生存期与其所属对象相同,随着对象的创建而创建,随着对象的销毁而销毁

局部变量:局部变量的生存期就是其所属方法或语句块的单次执行期间

18.变量的存储:

存储位置的分类

寄存器:寄存器在处理器的内部,空间最小,速度最快。寄存器根据系统的需要分配,程序员无法直接控制

栈:存储空间连续,以栈的方式进行管理容量小,访问速度快

堆:存储空间不连续,容量大,但是速度慢

程序代码内部:常量通常存储在程序代码内部,这样是安全的,因为它永远不会被改变。

外存储器:用于存储持久化数据

Java 中变量的存储

局部变量(基本类型、引用类型的句柄/引用)保存在栈内存中

对象及其成员变量(包含基本类型和引用类型)保存在堆内存中

19.java 数据存储:

20.方法:

方法

Java 语言中的方法相当于其他计算机语言中的函数或子程序,是用来完成相对独立的功能的一段代码的集合。

从类的角度来看,方法是类的动态性能描述了该类事务共有的功能或行为

语法规则

Java 的方法必须定义在类中,而不允许直接定义在源文件中

方法的定义不允许出现嵌套

只有方法所在的类的对象才有资格调用该方法

语法格式

[] return_type ([]){

[]

}

21.方法的四要素:----并不是全部必需的

返回类型(返回值)、形式参数、实际参数、方法体

返回类型

事先约定的返回值的数据类型。如果没有返回值,则返回类型定义为 void;定义构造方法时,则不允许给出返回值类型。

返回值

使用 return 关键字来返回值,return 的作用是终止方法的运行并返回其结果给调用它的环境。使用的格式是:return someValue;

如果方法的返回类型为 void,则可以省略 return;语句。编译时系统会自动添加该语句

形参和实参

形参:方法被调用时用于接受外界输入的数据

实参:调用方法时实际传给方法的数据

方法体

多条 Java 语句组成的语句块,用于完成特定的功能

22.方法的参数传递:

目前主流的说法是值传递和引用传递,

其中基本类型的传递为值传递,传递前后变量的值不变; ----即便在方法内部更改值,也只是在方法内部有效!

引用类型的传递为引用传递,传递前后变量(对象)的值会改变。----如果在方法中改变了对象的属性值,就真的改掉了!

23.方法形参和方法实参:

形参:用于方法定义时,需要明确参数的个数、顺序、参数的数据类型;

例如:public boolean display2(int height,int weight) {...}

实参:用于方法调用时,需要提供形参约定的参数个数及顺序。不需要在实参前面加数据类型,但是如果参数类型不一致,直接报错!例如:boolean result= person.display2(156, 150);

其他知识:

A.Eclipse 中显示包的方式,胖还是瘦;

B.Eclipse 中移动代码块,选中要移动的代码,按下 alt+ 上下方向键可以移动代码;

C.Eclipse 中文件修改没有保存的话,文件名称前有一个*星号;---Ctrl+s 保存

D.Eclipse 中 Alt+/ 可以手动触发提示;

D.改变 Git GUI 的文件编码显示的方式为 UTF-8,不修改则中文乱码;

Edit --Options

E.在 Git Bash 中:history 命令可以列出曾经执行过的命令;

F.拉取 GitHub 上的最新代码:

F1.打开从 Github 克隆而来的本地代码库;

F2.右键--Git Bash :

使用 git status 命令查看本地仓库的状态;

若本地仓库是干净的,使用 git pull 命令从 GitHub 上拉取代码到本地仓库;

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖
  • 开发
    37 引用 • 156 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 187 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 533 回帖 • 735 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 330 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 182 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 6 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    77 引用 • 159 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 140 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 321 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    85 引用 • 122 回帖 • 618 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 20 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 257 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 499 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    109 引用 • 54 回帖 • 3 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 65 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 363 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖 • 2 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1234 回帖 • 441 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 396 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 5 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    216 引用 • 463 回帖
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 249 关注