Java从入门到实战总结-1.2、Java基础语法
文章目录
- Java从入门到实战总结-1.2、Java基础语法
- 1、二进制
- (1)、补码
- (2)、二进制和十进制之间的互换
- (3)、十六进制
- (4)、八进制
- 2、变量概述
- 3、数据类型和变量
- (1)、数据类型
- (2)、标识符
- (3)、关键字
- 4、变量调换
- (1)、利用中间变量来交换
- 5、数据类型转换
- 6、double和float变量定义
- 7、long变量定义
- 8、char变量使用
- 9、ascII码表
- 10、方法的使用-简述
- 11、算数运算符
- 12、赋值运算符
- 13、关系运算符
- 14、逻辑运算符
- 15、字符串连接符
- 16、三目运算符
- 17、操作符优先级
- 17、变量作用域
- 18、编程规范
- 19、转义字符
- 20、代码练习
1、二进制
- 计算机中的数据都以二进制数字保存。
- 二进制:逢二进一。即只有 0、1 两个值。
如:十进制的 10 在计算机内保存为二进制的 1010
- 计算机中信息的存储单位
位(Bit):表示一个二进制数码 0 或 1,是计算机存储处理信息的最基本的单位。
字节(Byte):一个字节由 8 个位组成。它表示作为一个完整处理单位的 8 个二进制数码。
(1)、补码
事实上,计算机内的二进制数值是以补码形式表示的。
补码:
一个正数的补码和其原码的形式是相同的。
负数的补码是:将该数的绝对值的二进制形式,按位取反再加 1。
由此可知,二进制补码数值的最高位(最左位)是符号位:该位为 0,表示数值为正数;该位为 1,表示数值为负数。
10 = 00000000 00000000 00000000 00001010
-10 = 11111111 11111111 11111111 11110110
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最
高位(符号位)有进位,则进位被舍弃。
(2)、二进制和十进制之间的互换
- 二进制数转换成十进制数
按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
例:原码 1011.01 = 1× 23 + 0×22+1×21+1×20+0×2-1+1×2-2
= 8+0+2+1+0+0.25
=11.25
- 十进制转换成二进制
整数部分: "除 2 取余,逆序排列"法
小数部分: "乘 2 取整,顺序排列"法
整数部分
小数部分
2 89
0.625
2 44 … 1
X 2 1.25
2 22 … 0
X 2 0.5
2 11 … 0
X 2 1.0
2 5 … 1
0.625 0.101
2 2 … 1
2 1 … 0
0 … 1
89 1011001
(3)、十六进制
二进制表示法太冗长,所以在程序中一般喜欢用十六进制。
十六进制:基数为十六,逢十六进一。它用 abcdef 表示从 0-9 之上的值。
Java 中十六进制数据要以 0x 或 0X 开头。如:0x23D
十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可。
二进制
十六进制
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
(4)、八进制
八进制:基数为八。
Java 中八进制数据要以 0 开头。如:0123
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。
现在的计算机系统很少用八进制的了。
二进制
八进制
001
1
010
2
011
3
100
4
101
5
110
6
2、变量概述
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为"变量"。 (所以我们这里可以以内存去思考程序,建立一个数据流的思维,这在汇编和反编译的时候将会非常有用)
变量分类:
按所属的数据类型划分:
基本数据类型变量
引用数据类型变量
按被声明的位置划分:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量
特别注意:类的外面不能有变量的声明
3、数据类型和变量
(1)、数据类型
由于变量记录的数据内容大小不同, 导致所需的存储单元大小不同,在 Java 语言中使用数据类型的概念加以描述 .
字节是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。Java 中的字节是八位的字节,即它包含八位的二进制数。
类型
占用内存
值范围(含边界值)
默认值
整数型(int)
4 字节
-2 147 483 648 ~ 2 147 483 647(稍大于 20 亿)
0
短整数型(short)
2 字节
-32 768 ~ 32 767
0
长整数型(long)
8 字节
-9 223 372 036 854 775 808L ~ 9 223 372 036 854 775 807L
0
字节型(byte)
1 字节
-128 ~ 127
0
浮点型(float)
4 字节
-3.40292347E+38-3.40292347E+38
0.0f
双 精 度 型(double)
8 字节
-1.79769313486231570E+308-1.79769313486231570E+308
0.0d
布尔型(boolean)
1 字节
true 或 false
false
字符型(char)
2 字节
‘ \u0000 - u\ffff ’
‘\u0000 ’
(2)、标识符
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
规则如下:
- 由字母、数字、下划线(_)和美元符号($)组成。
- 不能以数字开头。
- 区分大小。
- 长度无限制。
- 不能是 Java 中的保留关键字。
标识符命名习惯:见名知意。
示例:
合法标识符:HelloWord、username2、user_name、_userName、$abc_123
非法标识符:2UserName、user#Name、Hello World、class
(3)、关键字
Java 中有一些赋予特定的含义,有专门用途的字符串称为关键字(keyword)。全部是小写。
保留字:没有定义用途,但保留备用。
goto、const
4、变量调换
(1)、利用中间变量来交换
package day02_test1;public class Demo1 {
/**
* 任务:
* 将下面的变量a和变量b的值通过运算,进行调换
*/
public static void main(String[] args) {
int a = 10;
int b = 20;
//通过第三方变量的方式,进行了替换
int c = 0;
//1. 使用第三方变量c记录a的值
c = a;
//2. 将变量b的值 给a
a = b;
//3. 将变量c记录的a原来的值 给b
b = c;
System.out.println(a);
System.out.println(b);
}
}
5、数据类型转换
boolean 类型不能转换成任何其它数据类型。
自动类型转换: 容量小的类型自动转换成容量大的数据类型
byte,short,int -> float ->long ->double
byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型
强制类型转换: 容量大的类型转换成容量小的数据类型时,要加上强制转换符
long l = 100L;
int i = (int)l;
有可能造成精度降低或数据溢出,使用时要小心。
6、double和float变量定义
1、float类型变量定义时需要注意:我们直接写出的浮点数字,默认类型是double,会提示需要强转
2、解决方法:在浮点数字的后面加上f,来表示写出的数字类型是float
float f1 = 10.1f;7、long变量定义
1、long类型变量定义时需要注意:我们直接写出的整形数字,默认类型是int,当值超过int范围时会出错
2、解决方法:在整形数字后面加入l,来表示写出的数字类型是long
long l1 = 220000000l;8、char变量使用
使用单引号,可以参与数字运算。
char c1 = 'A';System.out.println(++c1);
9、ascII码表
10、方法的使用-简述
方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符 方法名、参数列表和返回值。
格式:
权限修饰符 返回值类型声明 方法名称(参数列表){
方法中封装的逻辑功能;
return 返回值;
}
权限修饰符详解
返回值详解
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。
如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。
参数列表详解
方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
在方法定义时,需要声明该方法所需要的参数变量。
在方法调用时,会将实际参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。
方法示例
public void say(int a,int b){
System.out.println(“方法 say 正在执行”);
}
package day02_test1;public class Demo2 {
public static void main(String[] args) {
say();
int num = sum(10, 20);
System.out.println(num);
}
public static void say() {
System.out.println("Hello World");
}
public static int sum(int x, int y) {
int s = x + y;
return s;
}
}
11、算数运算符
++: 如果是变量前缀:先对此变量加 1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量加 1
–: 如果是变量前缀:先对此变量减 1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量减 1
12、赋值运算符
赋值运算符作用是将一个值赋给一个变量,运算顺序从右到左
13、关系运算符
关系运算符作用是比较两边的操作数,结果总是 boolean 型的。
14、逻辑运算符
逻辑运算符用于对 boolean
型结果的表达式进行运算,运算结果总是 boolean 型,后面结合条件结构讲解。
15、字符串连接符
String s=“He” + “llo”; 结果"Hello"
"+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。
如:String s=“x” + 123; 结果"x123"
16、三目运算符
X ? Y : Z
X 为 boolean 类型表达式,先计算 x 的值,若为 true,整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
例:
int score = 75;
String type = score >=60 ? “及格” : “不及格”;
17、操作符优先级
运算符的优先次序(一般用不到,除非特殊没有规范的代码)
表达式的运算按照运算符的优先顺序从高到低进行,同级运算符从左到右进行:
优先次序
运算符
1
. [] ()
2
++ – ! ~ instanceof
3
new (type)
4
* / %
5
+ -
6
>> >>> <<
7
> < >= <=
8
= = !=
9
&
10
^
11
|
12
&&
13
||
14
?:
15
= += -= *= /= %= ^=
16
&= |= <<= >>= >>>=
17、变量作用域
作用域是程序的一个区域,一般来说有三个地方可以定义变量:
- 在函数或一个代码块内部声明的变量,称为局部变量。
- 在函数参数的定义中声明的变量,称为形式参数。
- 在所有函数外部声明的变量,称为全局变量。
当变量间出现重名的情况下,作用域小的屏蔽作用域大的,但该变量的作用只在其作用域内。
18、编程规范
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下:
- 由字母、数字、下划线(_)和美元符号($)组成。
- 不能以数字开头。
- 区分大小。
- 长度无限制。
- 不能是 Java 中的保留关键字。
命名规范: 软性建议
类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
变量名规范:全部小写。
可以按照一定的Java开发手册进行统一规定。
19、转义字符
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能
显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了
- 百度百科
转义字符
意义
ASCII码值(十进制)
\n
换行,将当前位置移到下一行开头
010
\r
回车 ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\\
代表一个反斜线字符’’\’
092
\’
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
20、代码练习
1、回文数判断
package day2;public class homework1 {
public static void main(String[] args) {
int num = 12121;
if(judgePalindromeNum(num)) {
System.out.println(num+"是回文数");
} else {
System.out.println(num+"不是回文数");
}
}
/**
* 定义一个整型变量并赋任意五位正整数作为初始值,判断它是不是五位
回文数(五位回文数:个位与万位相同,十位与千位相同,例如:12321
*/
public static boolean judgePalindromeNum(int num) {
String str1 = num + "";
StringBuilder str2 = new StringBuilder(str1);
str2.reverse();
int count = 0;
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) != str2.charAt(i)) {
break;
} else {
count++;
}
}
if (count == str1.length()) {
return true;
}
return false;
}
}
2、计算变量各位数之和
package day2;public class homework2 {
public static void main(String[] args) {
int num = 12345;
System.out.println(addUpTheNum(num));
}
/**
* 定义一个整型变量并赋任意五位正整数作为初始值,输出各位数字之和
(例如:12345 各位之和是:1+2+3+4+5 。也就是 15)
*/
public static int addUpTheNum(int num) {
int sum = 0;
int temp = num;
while (temp != 0) {
sum += temp % 10;
temp /= 10;
}
return sum;
}
}
3、变量交换
package day2;public class homework3 {
/**
* 定义整型变量 a、b,写出将 a、b 两个变量值进行互换的程序
(要求不能使用第三个变量)
*/
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println("交换前:"+a);
System.out.println(b);
a = a + b;
b = a - b;
a = a - b;
System.out.println("交换后:"+a);
System.out.println(b);
}
}
4、编码规范
package day2;public class Homework4 {
/**
* 程序入口函数
*/
public static void main(String[] args) {
printHelloWorld();
printHelloWorld();
}
/**
* 遵守编码规范的打印 Hello World 代码
(注意,注释必须有,也要遵守规范)
*/
public static void printHelloWorld() {
System.out.println("Hello World");
}
}