Java程序是一系列对象的集合,而对象之间透过彼此之间调用方法来达到开发目的,因此在认识Java程序前需要特别注意几个专有名词:
接着来看看一个简单的java程序,其中标识符是对所有需要名字的组成部分的通称,关键字是java为了特殊目的保留的字段,不开放给开发者使用,变数是一个用来储存变动数值的内存记忆体名称
如果有学过其他程序语言的朋友应该可以看到几分相似之处:
Java标识符是package,class,interface,method或变数名的总称。而好的命名必须要能明确反映出作用。不过在在正确命名前我们需要了解那些命名是合法的哪些又是非法的
例如以下的例子,可以使用英文大小写(大小写有别)、数字、下滑线、美元符等特殊字元
但是但是,知道可以用英文字母、数字、特殊字元来表示并不代表没有限制,例如不能以数字开头、避免使用关键字予保留字、名称之间不能有空白等
关键字是对编译器有特殊用意的词,这些关键字代表的意思会在後面介绍,我们先熟悉几个常见的就可以
例如
保留字是虽然现在没有作为关键字,但是在以後版本说不定会进行更新,例如等
不管是关键字还是保留字,在做标识符命名时应该避免使用
下面的表格是常见的关键字表,不用特别去背,用到的时候自然会记得,或者看编辑器是否有highlight就知道了
abstract | boolean | break | byte | case | catch |
---|---|---|---|---|---|
char | class | continue | default | do | double |
else | extends | false | final | finally | float |
for | if | implements | import | native | int |
interface | long | instanceof | new | null | package |
private | protected | public | return | short | static |
super | switch | synchronized | this | throw | throws |
transient | true | try | void | volatile | while |
变数是用来储存不断改变数值的一小块记忆体区块的总称,我们在编写java程序时需要注意三个重点,分别是
int i=10;
因为变数也是标识符的一种,因此他的命名也具有相同的规范性,同时变数的命名有专属於它的一套特别规则
驼峰命名法
假如变数只有单一一个词,那麽变数名必须要全部小写
例如: age
若该变数名是由两个单词组成那麽第一个单词小写,第二个单词首字母大写
例如: lastDay
好的单词需要简短有力,让其他开发者一看就知道它代表的意思,并且可以清楚区分他是类、方法或是变数
Pascal命名法
Pascal命名法是针对类的命名法,他要求首字母必须大写
例如:
package com.imooc;
public class Hello{
public static void main(String[] args) {
int a = 10;
System.out.println(a);
}
}
java主要的变数类型大概可以用下图来表示,本篇将会大致介绍基本变数类型的基础,详细变数的操作会在後篇提及
基本变数类型的学习重点在於变数存储范围以及变数存储代表的含意,学习使用不同变数类型目的在於依照场合使用最适合变数
变数在使用前一定要进行初始化
下表示java不同变数类型的范围以及含意:
变数类型 | 意思 | 占用位元组 |
---|---|---|
byte | 字节型 | 1 |
short | 短整数型 | 2 |
int | 整数型 | 4 |
long | 长整数型 | 8 |
float | 单经度浮点数 | 4 |
double | 双精度符点数 | 8 |
char | 字元型 | 2 |
boolean | 布林型 | 1 |
可以将储存范围小的变数赋值给储存范围大的变数,反过来则不行,学过相关程序语言的朋友应该也理解这个概念
float f=123.23f;
double d;
d=f;
整数的范围
整数类型依照储存大小从小到大分别为,储存范围如下表:
类型 | 最小值 | 最大值 |
---|---|---|
byte | -128 | 127 |
short | -32768 | 32767 |
int | -2,147,483,648 | 2,147,483,647 |
long | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
整数的表达方式
在java程序中可以用简单的8, 10, 16进位来表达整数值
byte b1 = 127;
byte b2 = -128;
short s1 = 123;
short s2 = -321;
int i = 2147483647;
int i = 0;
long i = 2147483648; // 没有後缀的情况下,预设是int类型,编译会出错
long l = 123456L; // 後缀L或l可以代表long类型,不过通常会写大写以免l与1混淆
byte与short不用加上後缀
在java中常数预设是int
类型,也就是说整数范围在-2,147,483,648
~2,147,483,647
。
如果使用long
赋值时整数值超出,就要告诉编译器这个常数是long
型。相反的byte
与short
的范围均在int
之内,所以不需要增加後缀来增加常数表达长度,不过要注意赋值时不要超过宣告的变数范围,不然就要使用转型
具有小数点的变数类型,常用於高精度计算,如果没有特定後缀,预设会将浮点数类型宣告成double,这点要特别注意
float f1 = 123.456; // 错误,应该改成
float f2 = 123.456f;
double d1 = 123.456d // 大小写没有限制
double d2 = 123.456D;
储存范围如下表:
类型 | 最小数 | 最小精度 | 最大正整数 |
---|---|---|---|
float | -3.40E+38 | 1.4E-45 | 3.40E+38 |
double | -1.79E+308 | 4.9e-324 | 1.79E+308 |
科学记号表示法
我们可以使用科学记号来表示浮点数
double d1 = 1.3e10;
double d2 = 1.3E10;
特殊表达方法
char c=.5; // c=0.5
float
类型来节省double
类型记忆体空间float f1 = 0.239f;
float f2;
f2 = 0.239F;
double
类型是表达范围最广的变数类型double d1 = 9453.9453d;
double d2;
d2 = 5942.5942D;
有些书上会把最小值与最精确值搞混,将float
最小值写成1.4E-45
,不过既然是有符号类型,那最小值一定是负数,这不就矛盾了吗
於是打开Float.class
看看里面的定义,果然找到一个常数MIN_VALUE
,看了一下注解对它的解释该常数表示的最小正浮点数,也可以解释成float
可以多精准。右侧的注解又提到大小为1.4e-45f
跟书中最小值定义一样,还好有看注解,不然真的会被搞懵
由此可知真正的最小值应该是最大值取负,最大值在Float.class
也可以找到MAX_VALUE
这个值,大小是3.40E+38
。double
的话就去参考Double.class
就可以了
浮点的二进位表示方法可以参考之前写的文章
最後把这些常数定义打印出来,double check跟所学的没问题
char类型是16bits无符号变数类型,它表示Unicode字元,其范围为0~65535
类型 | 最小值 | 最大值 |
---|---|---|
char | 0 | 65535 |
在使用char类型数据赋值时应注意需使用' '单引号,但不能使用" "双引号
char c="h"; // c: Am I a joke to you?
char c='h' // 正确
整数表示
char c1='A'; // 可以用以下方法表示
char c2=0101; // 8进位
char c3=65; // 10进位
char c4=0x41; // 16进位
Unicode编码方法
根据Unicode Table的对应数做字面量的赋值
char a='\u0041' // 'A'
超出范围需要casting
char a = 65535; // 正常范围
char b = (char)65536 // 超出范围,需要进行casting
跳脱字元
字元中有代表特殊含意的跳脱字元,当跳脱字元放在字元阵列时,它会对後续的字元做特殊操作。常见的跳脱字元如下表
跳脱字元 | 含意 |
---|---|
\' | 单引号字元 |
\\ | 反斜线字元 |
\t | tab空行 |
\r | Enter |
\n | 换行字元 |
\b | Backspace |
\0 | null |
字串类型的变数,可以用来直接接收字串,注意字串类型要用两个双引号包起来
String s1 = "I Like Java!";
另外字串类型变数也可以用Unicode编码方式给值,例如我们可以将
String s1 = "ABC";
替换成
String s1="\u0041\u0042\u0043";
另外宣告字串类型後,要对它进行初始化操作,就算是是空字串,也要执行初始化
String s1=""; // 宣告时即初始化
String s2;
s2 = ""; // 宣告後再进行赋值
java相对於C/C++不同,布林类型变数值只能是true
或false
,不能是0或1。布林变数类型常用来做条件判断用
boolean b=true;
if(b) {
System.out.print("boolean="+b);
}
<<: Java 开发 WEB 的好平台 -- Grails -- (4) 建立第一个 Controller
今天要结合前两天的成果,完成 LIFF APP 串接 发送认证码 API 的功能 目标 要完成的功能...
天啊.怎麽做啊? 同事用了一个聪明的作法, XD 这麽简单,怎麽没想到呢?脑袋卡卡! 我们先来做一下...
接着来讲讲get set部分.... public class A { public string ...
#odoo #开源系统 #数位赋能 #E化自主 实体通路与电子商务最大的差异,应该就是实体通路很明确...
前一篇我分享了系统分析师必须要有商业思维才有能力真正对你所服务的客户提供正确且完整的解决方案!但是,...