三、变量和数据类型

文章目录

  • 一、JAVA程序基本结构
    • 1-1注释
    • 1-2 类
    • 1-3 方法
    • 1-4 代码格式化
  • 二、变量和数据类型
    • 2-1 标识符
    • 2-2 关键字
    • 2-3 字面值【数据】
    • 2-4 变量
    • 2-5 数据类型
      • 2-5-1 字符型
      • 2-5-2 整型
      • 2-5-3 浮点型
      • 2-5-4 布尔型
      • 2-5-5 类、接口、数组
    • 2-6 字符编码

一、JAVA程序基本结构

/**
 *可以用来自动创建文档的注释
 */
public class Hello {
	//类体
	//类体中不允许直接编写Java语句(除声明变量外)
    public static void main(String[] args) {
		//方法体
		//方法体中可以编写多条Java语句,方法体中的语句遵守自上而下的顺序依次执行
		//每一条语句均以;(半角)结束
        // 向屏幕输出文本
        System.out.println("Hello, world!");
        /* 多行注释开始
        注释内容
        注释结束 */
    }
} // class定义结束

1-1注释

1.单行注释

//以双杠开头

2.多行注释

/* 多行注释开始
        注释内容
        注释结束 */

3.自动创建文档的注释

/**
 *可以用来自动创建文档的注释
 */
  • Javadoc 是 Sun 公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的 API 帮助文档。也就是说,只要在编写程序时以一套特定的标签注释,在程序编写完成后,通过 Javadoc 就形成了程序的 API 帮助文档。

  • 文档注释位置
    ①类注释。类注释用于说明整个类的功能、特性等,它应该放在所有的“import”语句之后,在class定义之前。这个规则也适用于接口(interface)注释。
    ②方法注释。方法注释用来说明方法的定义,比如,方法的参数、返回值及说明方法的作用等。方法注释应该放在它所描述的方法定义前面。
    ③属性注释。默认情况下,javadoc只对公有(public)属性和受保护属性(protected)产生文档——通常是静态常量。
    ④包注释。类、方法、属性的注释都直接放到Java的源文件中,而对于包的注释,无法放到Java文件中去,只能通过在包对应的目录中添加一个package.html的文件来达到这个目的。当生成HTML文件时,package.html文件的和部分的内容将会被提取出来当做包的说明。关于包注释,后面还会有更进一步的解释。
    ⑤概要注释。除了包注释外,还有一种类型的文档无法从Java源文件中提取,就是对所有类文件提供概要说明的文件。同样的,也可以为这类注释单独新建一个HTML文件,这个文件的名字为“overview.html”,它的和标记之间的内容都会被提取。

  • 在 cmd(命令提示符)中输入javadoc -help就可以看到 Javadoc 的用法和选项
    三、变量和数据类型_第1张图片

1-2 类

public class Hello { // 类名为Hello
    // ...
} // class定义结束

1.因为Java是面向对象的语言,一个程序的基本单位就是class,class是关键字,上面程序定义的class名字就是Hello,一个class会定义生成一个xxx.class字节码文件。
2.类名要求:

  • 类名必须以英文字母开头,后接字母,数字和下划线的组合
  • 习惯以大写字母开头

3.驼峰命名法
驼峰命名法是指多个单词组合在一起标识一个特定的含义时,第一个单词全部小写,第二个以及之后的单词首字母大写其余小写的命名规则,其中分为小驼峰法与大驼峰法。以Java为例:
①小驼峰

  • 第一个单词首字母小写,其他单词首字母大写,如getMyName
  • 一般用于变量名和方法名

②大驼峰

  • 全部单词首字母大写,如CheckName
  • 主要用于接口名和类名

4.注意public为访问修饰符,表示该class是公开的。不写public,也能正确编译,但是这个类将无法从命令行执行。一个 .java 文件只能包含一个 public 类,但可以包含多个非 public 类,除了一个 public 类,其它类都只能用 default 修饰。如果有 public类,public 类的类名必须与文件名相同。
5.每一个class中都可以编写main方法,都可以设定程序的入口
三、变量和数据类型_第2张图片

1-3 方法

public class Hello {
    public static void main(String[] args) { // 方法名是main
        // 方法代码...
    } // 方法定义结束
}

1.在class内部,可以定义若干方法(method),方法定义了一组执行语句,方法内部的代码将会被依次顺序执行。
2.这里的方法名为main
3.void关键字在返回值为空时使用,static关键字表示该方法为静态方法。
4.Java规定,某个类定义的public static void main(String[] args)是Java程序的固定入口方法。(Java入口程序规定的方法必须是静态方法,方法名必须为main,括号内的参数必须是String数组。)Java程序总是从main方法开始执行。

1-4 代码格式化

在IDEA中,快捷键为Ctrl+Alt+L
三、变量和数据类型_第3张图片

二、变量和数据类型

2-1 标识符

1.什么标识符?
①通俗理解:在java源程序中凡是程序员有权利自己命名的单词都是标识符
②标识符可以标识哪些元素呢?
类名、方法名、变量名、接口名、常量名…
2.标识符命名规则?(不符合规则,程序编译会报错)
①只能由数字、字母、下划线、美元符号组成,不能含有其它符号
②不能由数字开头
③严格区分大小写
④关键字不能做标识符
⑤理论上无长度限制,但最好不要过长
3.标识符命名规范?(不符合规范,程序编译不会报错)
①最好见名知意
②遵守驼峰命名法(详见1-2第3条)

正确 错误
_123Text 123Text
HelloWorld HelloWord!
public1 public
HelloWorld Hello World

2-2 关键字

常见关键字
public
calss
static
void
if
for
while
do
default
byte
short
int
long
float
double
boolean
char
private
protected
switch
true
false
throw
try
catch

2-3 字面值【数据】

①10、100整数型字面值
②3.14浮点型字面值
③"abc"字符串型字面值
④’a’字符型字面值
⑤true、false布尔型字面值
没有一个具体的定义,可以理解为在C语言中的常量在Java中看作字面值,因为Java的常量有其他含义。
注:
Java语言中的所有字符串型字面值必须使用双引号括起来,双引号为半角;
Java语言中的所有字符型字面值必须使用单引号括起来,单引号为半角

2-4 变量

1.什么是变量?
①变量本质上来说是内存中的一块儿空间,这块空间“有数据类型”、“有名字”、“有字面值”。
②变量包含三个部分:数据类型、名称、字面值【数据】
③变量是内存中存储数据的最基本的单元
2.数据类型的作用?
不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间。
3.变量中存储的具体的“数据”必须和变量的“数据类型”一致,当不一致时编译报错
4.声明/定义变量的语法格式:数据类型 变量名;
5.在Java中,变量必须先定义后使用,在定义变量的时候,可以给它一个初始值。

int x=0;//定义了一个整型int类型的变量,名称为x,初始值为0
//等号=是赋值语句,不是数学意义上的相等,否则无法解释x=x+100

在同一个作用域中,变量不能重名,但是可以重新赋值。
三、变量和数据类型_第4张图片
注:在重新赋值时,无需重复定义该变量。
变量必须声明并赋值才能访问,但需注意成员变量没有手动赋值系统会默认赋值,局部变量不会
三、变量和数据类型_第5张图片

6.通常访问一个变量包括两种访问形式:
①第一种:读取变量中保存的具体数据(get/获取)
②第二种:修改变量中保存的具体数据(set/设置)

i=20;//set
System.out.println(i);//get

7.变量在一行上可以声明多个,但需注意不能连等
三、变量和数据类型_第6张图片
三、变量和数据类型_第7张图片
8.变量的作用域简记:出了大括号就不认识了
9.根据变量声明的位置,变量可分为局部变量和成员变量
①局部变量:在方法体中声明的变量
②成员变量:在方法体外声明的变量
三、变量和数据类型_第8张图片
Java遵循就近原则

2-5 数据类型

1.数据类型的作用是什么?
程序中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间的大小不同,数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间。
2.Java中的数据类型包括两种
①基本数据类型(四大类八小种)

  • 整数型:byte,short,int,long
  • 浮点型:float,double
  • 布尔型:boolean
  • 字符型:char

②引用数据类型

  • 接口
  • 数组
    。。。
    Java中的引用数据类型,相当于C等语言中指针(pointer)类型,引用事实上就是指针,是指向一个对象的内存地址。引用数据类型变量中保持的是指向对象的内存地址。

3.字符串"abc"不属于基本数据类型,属于引用数据类型,字符属于基本数据类型,字符串使用双引号,字符使用单引号
4.八种基本数据类型占用空间大小

基本数据类型 占用空间大小(单位:字节) 取值范围 默认值
byte 1 − 2 7 ∼ 2 7 − 1 ( − 128 ∼ 127 ) -2^7\sim2^7-1(-128\sim127) 27271(128127) 0
short 2 − 2 15 ∼ 2 15 − 1 ( − 32768 ∼ 32767 ) -2^{15}\sim2^{15}-1(-32768\sim32767) 2152151(3276832767) 0
int 4 − 2 31 ∼ 2 31 − 1 -2^{31}\sim2^{31}-1 2312311 0
long 8 − 2 63 ∼ 2 63 − 1 -2^{63}\sim2^{63}-1 2632631 0
float 4 − 2 31 ∼ 2 31 − 1 -2^{31}\sim2^{31}-1 2312311 0.0
double 8 − 2 63 ∼ 2 63 − 1 -2^{63}\sim2^{63}-1 2632631 0.0
boolean 1 t r u e / f a l s e true/false true/false f a l s e false false
char 2 0 ∼ 2 16 − 1 ( 0 ∼ 65535 ) 0\sim2^{16}-1(0\sim65535) 02161(065535) \u0000

(在C语言中,true为1,false为0)

5.1byte=8bit(1个比特位表示一个二进制位:1/0)
1 KB=1024 Byte
1MB =1024 KB
1GB =1024 MB
1 TB =1024 GB
6.数字的二进制中有一个二进制位被称为“符号位”,并且这个“符号位”在所有二进制位的最左边。0表示整数,1表示负数。

2-5-1 字符型

1.常见使用
三、变量和数据类型_第9张图片
2.转义字符
转义字符出现在特殊字符之前,会将特殊字符转换成普通字符
三、变量和数据类型_第10张图片

常用 含义
\n 换行符
\t 制表符
\’ 普通的单引号
\\ 普通的反斜杠
\" 普通的双引号

2-5-2 整型

1.java语言中的“整数型字面值”被默认当做int类型来处理,要让这个“整数型字面值”被当作long类型来处理的话,需要在“整数型字面值后面添加l/L,建议使用大写的L。

int i=123;//123这个整数型字面值是int类型,i变量声明的时候也是int类型,int类型的123赋值给int类型的变量i,不存在类型转换
System.out.println(i);

long j=456;//int类型的456赋值给long类型的变量j,存在类型转换
//int类型是小容量,long类型是大容量,小容量可以自动转换成大容量,称为自动转换机制
System.out.println(j);

long x=2147483647;
System.out.println(x);
//long y=2147483648;编译错误:过大的整数
//2147483648被当做int类型的4个字节处理,但这个字面值超出int类型范围
long y=2147483648L;//2147483648字面值一上来就当做long类型来处理,在字面值后面添加L
System.out.println(y);
long x=100L;
/*
int y=x;编译错误,大容量不能直接赋值给小容量
大容量转换成小容量,需要强制类型转换
强制类型转换运行阶段可能会损失精度,所以需谨慎使用
*/
int y=(int)x;
System.out.println(y);
//强转原理:
    //原始数据:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100
    //转换之后的数据:00000000 00000000 00000000 01100100
    //将左边的二进制砍掉【所有的数据强转都是这样完成的】
byte z=50;//int类型字面值赋值给byte类型,大容量转换为小容量,未使用强制转换,未报错
//在java语言中,当一个整数型字面值没有超出byte类型取值范围时,该变量值可直接赋值给byte的变量
byte z2=192;
//编译报错,192超出了byte类型的取值范围,不能直接赋值给byte类型的变量
short p=32767;//编译通过
//short q=32768;编译报错

2.计算机中存储数据是以补码的形式,求原码的操作其实就是对该补码再求补码。
①如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
②如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
负数求补码:除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1

3.java语言中的整数型字面值有三种表示方式:
①十进制:是一种缺省默认的方式
②八进制:在编写八进制整数型字面值的时候需要以0开始
③十六进制:在编写十六进制整数型字面值的时候需要以0x开始

int a=10;//10
int b=010;//8
int c=0x10;//16

2-5-3 浮点型

1.float 单精度[4个字节]
double 双精度[8个字节,精度较高]
double的精度太低(相对而言),不适合做财务软件,财务使用精度更高的类型-java.math.BigDecimal,是一种引用数据类型,不属于基本数据类型。

SE类库字节码:E:\JAVA\JDK\jre\lib\rt.jar
SE类库源码:E:\JAVA\JDK\src.zip

2.在java语言中,所有的浮点型字面值,默认被当做double类型来处理。
要想该字面值被当做float类型来处理,需要在字面值后加F/f。
注:double和float在计算机内部二进制存储的时候存储的都是近似值。

2-5-4 布尔型

1.在java语言中boolean类型只有两个值:true、false,不可以用0和1表示。
2.在底层存储的时候boolean类型占用1个字节,因为实际存储的时候false底层是0,true的底层是1。
3.关于基本数据类型之间的相互转换:

  • 八种基本数据类型中除布尔类型外剩下的种数据类型都可以相互转换。
  • 小容量向大容量转换,称为自动类型转换,容量从小到大排序:byte
  • 注:任何浮点数据类型不管占用多少个字节,都比整数型容量大。char和short可表示的种类数量相同,但是char可以取更大的正整数。
  • 大容量转换成小容量,称为强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
  • 当字面值没有超过byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。
  • byte,short,char混合运算的时候,各自先转换成int类型再做运算。
  • 多种数据类型混合运算,先转换成容量最大的类型再做运算。

2-5-5 类、接口、数组

(1)类class
可以是我们创建的,下面是几个JAVA库中的类。
①Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法。用Object可以定义所有的类
如:
Object object= new Integer(1); 来定义一个Interger类
Integer i=(Integer) object; 在来把这个Object强制转换成Interger类
②String :String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为大写或小写形式。
③Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替
④Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。
同时也有对应的Class如:Integer Long Boolean Byte Character Double Float Short
(2)接口interface
例:List:列表 ,此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引 (在列表中的位置)访问元素,并搜索列表中的元素。
(3)数组
存储在一个连续的内存块中的相同数据类型的元素集合。

2-6 字符编码

1.计算机最初只支持英文,最先出现的字符编码是ASCII码
′ a ′ → 97 'a'\rightarrow97 a97
′ A ′ → 65 'A'\rightarrow65 A65
′ 0 ′ → 48 '0'\rightarrow48 048
编码和解码采用同一套字典/对照表,不会出现乱码。
′ a ′ → 按照 A S C I I 解码 → 01100001 'a'\rightarrow按照ASCII解码\rightarrow01100001 a按照ASCII解码01100001
01100001 → 按照 A S C I I 编码 → ′ a ′ 01100001\rightarrow按照ASCII编码\rightarrow'a' 01100001按照ASCII编码a
2.随着计算机的发展,后来出现了一种编码方式,是国际化标准组织ISO制定的,这种编码方式支持西欧语言,向上兼容ASCII码,仍然不支持中文。这种编码方式是:ISO-8859-1,又被称为latin-1
3.随着计算机向亚洲发展,计算机开始支持中文、日文、韩文等国家文字,其中支持简体中文的编码方式:
GB2312 4.支持繁体中文:大五码big5
5.后来出现了一种编码方式统一了全球所有的文字,容量较大,这种编码方式叫做:unicode编码
unicode编码方式有多种具体的实现:

  • UTF-8(实际开发中使用较多)
  • UTF-16
  • UTE-32…

6.java语言采用的是哪一种编码方式呢?
java语言源代码采用的是unicode编码方式,所以"标识符"可以用中文。

你可能感兴趣的:(JAVA学习,java)