Java基础_基本概念和变量
Java基础_基本概念和变量
1、基本概念
- Java语言是一门严格区分大小写的语言
- 每一行执行语句必须以分号
;
结束。
1.1 Java程序的结构与格式
结构:
1 | 类{ |
格式:
(1)每一级缩进一个Tab键
(2){}的左半部分在行尾,右半部分单独一行,与和它成对的”{“的行首对齐
1.2 Java程序的入口
Java程序的入口是main方法
1 | public static void main(String[] args){ |
1.3 两种常见的输出语句
换行输出语句:输出内容,完毕后进行换行,格式如下:
1
System.out.println(输出内容);
直接输出语句:输出内容,完毕后不做任何处理,格式如下
1
System.out.print(输出内容);
注意事项:
换行输出语句,括号内可以什么都不写,只做换行处理
直接输出语句,括号内什么都不写的话,编译报错
1.4 源文件名与类名
如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。
如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。
一个源文件中可以有多个类,编译后会生成多个.class字节码文件。但是一个源文件只能有一个public的类。
1.5 注释(comment)
1 | 单行注释: // |
2、变量
2.1 标识符
- 凡是自己可以起名字的地方都叫标识符。
标识符的命名规则(必须遵守的硬性规定
):
1 | > 由26个英文字母大小写,0-9 ,_或 $ 组成 |
标识符的命名规范(建议遵守的软性要求
,否则工作时容易被鄙视):
1 | > 包名:多单词组成时所有字母都小写:xxxyyyzzz。 |
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
2.2 初识变量
Java中变量声明的格式:
数据类型 变量名 = 变量值
使用变量注意:
Java中每个变量必须先声明,后使用。
使用变量名来访问这块区域的数据。
变量的作用域:其定义所在的一对{ }内。
变量只有在其
作用域
内才有效。出了作用域,变量不可以再被调用。同一个作用域内,不能定义重名的变量。
Java中变量的数据类型分为两种:
- 变量可以反复赋值
- 也可以将变量的声明和赋值一并执行
2.3 基本数据类型
2.3.1 整数类型:byte、short、int、long
定义long类型的变量,赋值时需要以”
l
“或”L
“作为后缀。Java的整型
常量默认为 int 型
。字节(Byte):是计算机用于
计量存储容量
的基本
单位,一个字节等于8 bit。位(bit):是数据存储的
最小
单位。二进制数系统中,每个0或1就是一个位,叫做bit(比特),其中8 bit 就称为一个字节(Byte)。
2.3.2 浮点类型:float、double
- float:
单精度
,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。 - double:
双精度
,精度是float的两倍。通常采用此类型。 - 定义float类型的变量,赋值时需要以”
f
“或”F
“作为后缀。 - Java 的浮点型
常量默认为double型
。
关于浮点型精度的说明
并不是所有的小数都能可以精确的用二进制浮点数表示。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。
浮点类型float、double的数据不适合在
不容许舍入误差
的金融计算领域。如果需要精确
数字计算或保留指定位数的精度,需要使用BigDecimal类
。
2.3.3 字符类型:char
char 型数据用来表示通常意义上“
字符
”(占2字节)Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
字符型变量的三种表现形式:
形式1:使用单引号(‘ ‘)括起来的
单个字符
。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;
形式2:直接使用
Unicode值
来表示字符型常量:‘\uXXXX
’。其中,XXXX代表一个十六进制整数。例如:\u0023 表示 ‘#’。
形式3:Java中还允许使用
转义字符‘\’
来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // ‘\n’表示换行符
转义字符 说明 Unicode表示方式 \n
换行符 \u000a \t
制表符 \u0009 \"
双引号 \u0022 \'
单引号 \u0027 \\
反斜线 \u005c \b
退格符 \u0008 \r
回车符 \u000d char类型是可以进行运算的。因为它都对应有Unicode码,可以看做是一个数值。
2.3.4 布尔类型:boolean
- boolean类型数据只有两个值:true、false,无其它。
2.4 基本数据类型变量间运算规则
转换的方式有两种:自动类型提升
和强制类型转换
。
2.4.1 自动类型提升
基本数据类型的转换规则如图所示:
(1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时
1 | int i = 'A';//char自动升级为int,其实就是把字符的编码值赋值给i变量了 |
(2)当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算。
1 | int i = 1; |
(3)当byte,short,char数据类型的变量进行算术运算时,按照int类型处理。
1 | byte b1 = 1; |
2.4.2 强制类型转换
将3.14
赋值到int
类型变量会发生什么?产生编译失败,肯定无法赋值。
1 | int i = 3.14; // 编译报错 |
想要赋值成功,只有通过强制类型转换
,将double
类型强制转换成int
类型才能赋值。
转换格式:
1 | 数据类型1 变量名 = (数据类型1)被强转数据值; //()中的数据类型必须<=变量值的数据类型 |
(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度
或溢出
。
1 | int i = (int)3.14;//损失精度 |
(2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是没有风险
的,通常省略。
1 | int i = 1; |
(3)声明long类型变量时,可以出现省略后缀的情况。float则不同。
1 | long l1 = 123L; |
2.5 基本数据类型与String的运算
- String不是基本数据类型,属于引用数据类型
- String类型不能通过强制类型()转换,转为其他的类型
- 使用一对
""
来表示一个字符串,内部可以包含0个、1个或多个字符。
1 | //基本数据类型->String,基本数据类型后面加入“”即可 |
3、运算符
3.1 算术运算符
- 基本运算:
+ - * / %
- 取模运算:%——-》其结果与被模数的符号相同
1 | //结果与被模数符号相同 |
++i
先自增后赋值,i++
先赋值后自增,int k = ++j; //等价 j=j+1;k=j
3.2 赋值运算符
+= ,-= ,*= , /= ,%=
3.3 关系运算符 [比较运算符]
<,>,==,!=,>=,<=
- instanceof:检查是否是类的对象
3.4 逻辑运算符
a&b
: & 叫逻辑与:当 a 和 b 同时为 true ,则结果为 true, 否则为 falsea&&b
: && 叫短路与:当 a 和 b 同时为 true ,则结果为 true,否则为 false,如果第一个条件为 false ,后面的条件不再判断a|b
: | 叫逻辑或,当 a 和 b ,有一个为 true ,则结果为 true,否则为 falsea||b
: || 叫短路或,当 a 和 b ,有一个为 true ,则结果为 true,否则为 false,如果第一个条件为 false ,后面的条件不再判断!a
: 叫取反,或者非运算,当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 truea^b
: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false位运算符 [需要二进制基础]
三元运算符
- 条件表达式 ? 表达式 1: 表达式 2
3.5 进制
- 进制介绍
- 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
- 十进制:0-9 ,满 10 进 1。
- 八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
- 十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大小写。
- 进制运算
- 进制互相转化
- 原码、补码、反码
- 正数的原码、反码、补码都是一样的
- 负数的反码:原符号位不变,其他位取反
- 负数的补码:反码+1
- 0的反码补码都是0
- 计算机运算都是以补码来运算,看运算结果都是看他原码