第2节 基础语法
一、二进制
1.1 二进制介绍
计算机中的数据都以二进制数字保存。
二进制 :逢二进一,即只有0、1两个值。如十进制的10在计算机内保存为二进制的1010。
计算机中信息的存储单位:
-
位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。
-
字节(Byte):一个字节由8个位组成,它表示作为一个完整处理单位的8个二进制数码。
1.2 补码
事实上,计算机内的二进制数值是以补码形式表示的。
补码:
-
正数的补码:就是它本身;
-
负数的补码:将该数的绝对值的二进制形式,按位取反再加1。
由此可知,二进制补码数值的最高位(最左位)是符号位:0为正数,1为负数。
使用补码的主要原因 :
使用补码,可以将符号位和其他位统一处理;同时,减法也可以按加法来处理。另外,两个用补码表示的数相加时,如果最高位有进位,则进位被舍弃。
1.3 二进制和十进制之间的互换
二进制数转换成十进制数 :
按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
十进制转换成二进制 :
整数部分:除2取余,逆序排列
小数部分:乘2取整,顺序排列
1.4 十六进制
二进制表示法太冗长,所以在程序中一般喜欢用十六进制。
十六进制 :基数为十六,逢十六进一。它用ABCDEF表示10-15.
Java中十六进制数据要以0x或0X开头,如0x23D。
十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可。
二进制 十六进制
1.5 八进制
八进制:基数为八。
Java中八进制数据要以0开头,如0123.
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。
现在的计算机系统很少用八进制了。
二、变量
2.1 变量概述
变量 :系统为程序分配的一块内存单元,用来存储各种类型的数据,由于该存储单元中的数据可以发生改变,因此得名为“变量”。
变量分类:
- 按所属的数据类型划分:
- 基本数据类型变量
- 引用数据类型变量
- 按被声明的位置划分:
- 局部变量:方法或语句块内部定义的变量
- 成员变量:方法外部、类的内部定义的变量
特别注意:类的外面不能有变量的声明。
2.2 数据类型与变量定义、使用
2.2.1 数据类型
由于变量记录的数据内容大小不同,导致所需的存储单元大小不同,在Java语言中使用数据类型的概念加以描述。
2.2.2 标识符
关键字大全:
Java中有一些赋予特定含义,有专门用途的字符串称为关键字(keyword),全部都是小写。
命名规范: 软性建议
-
类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
-
方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
-
变量名规范:全部小写
2.2.3 变量定义、使用
public class variable {
public static void main(String[] args) {
//创建变量的语法:数据类型 变量名 = 初始化值;
int a = 20;
//创建变量暂不赋值的语法:数据类型 变量名;
int b;
//创建字符串变量
String s = "abcdef";
//重新给变量赋值的语法:变量名 = 值;
a = 30;
System.out.println(a);
}
}
变量调换小练习:
public class variable2 {
/**
* 任务:
* 将下面变量 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="+a);
System.out.println("b="+b);
}
}
2.3 数据类型转换
boolean类型不能转换成任何其他数据类型。
自动类型转换 :容量小的类型自动转换成容量大的数据类型
强制类型转换 :容量大的类型转换成容量小的数据类型时,要加上强制类型转换符
public class data_type_conversion {
public static void main(String[] args) {
//自动类型转换
byte b = 127;
int i = b;
System.out.println(i);
//强制类型转换,加上强制转换符
b = (byte)i; //强制转换有可能造成精度丢失
System.out.println(b);
}
}
2.4 float、long、char变量定义
public class float_var {
public static void main(String[] args) {
float f1 = 10; //右边的10默认是int类型
//1. float 类型变量在定义时需注意,我们直接写出的浮点数字,默认类型为double
//会提示需要强制转换,可以在浮点数字后面加上f/F,来表示写出的数字类型是float
float f2 = 10.1f;
//2. long类型变量定义需注意,直接写出的整形数字,默认类型是int
//当值过大时会显示出错。
//解决:在整形数字后面加入l/L,来表示写出的整形数字是long类型。
long l1 = 2200000000L;
//3. char类型定义:单引号括住,内放一个字符
//char类型变量可以进行数字运算
char c1 = 'A';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(++c1);
System.out.println(++c1);
}
}
ASCII码表:
2.5 变量作用域
public class variable_scope {
//变量的作用域
//代码分为结构定义语句和功能执行语句,功能执行语句必须以英文分号结尾
public static void main(String[] args) {
int a = 10;
}
public static void say() {
int a = 20;
}
}
public class variable_scope {
//变量的作用域
//代码分为结构定义语句和功能执行语句,功能执行语句必须以英文分号结尾
public static void main(String[] args) {
{
int a = 10;
}
{
int b = 20;
}
{
//会报错
System.out.println(a+b);
}
}
}
public class variable_scope {
//变量的作用域
//代码分为结构定义语句和功能执行语句,功能执行语句必须以英文分号结尾
public static void main(String[] args) {
int a = 10;
int b = 20;
{
//不会报错
System.out.println(a+b);
}
}
}
三、方法
3.1 概述
方法用于封装一段特定的逻辑功能。主要要素有:权限修饰符、方法名、参数列表和返回值。
3.2 格式
3.3 权限修饰符详解
规定了方法或类等的使用范围
3.4 返回值详解
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
通过 return 语句返回, return 语句的作用在于结束方法且将数据返回。
如果方法没有返回值(即方法不需要返回数据) , 需将返回值类型声明为 void。
3.5 参数列表详解
方法的参数列表: 在调用时传递给方法, 需要被方法处理的数据。
在方法定义时, 需要声明该方法所需要的参数变量。
在方法调用时, 会将实际参数值传递给方法的参数变量。 必须保证传递参数的类型和个数符合方法的声明。
下面方法中的static后续再学习
public class function {
public static void main(String[] args) {
say();
System.out.println("----------");
say();
}
public static void say() {
System.out.println("勇敢牛牛,不怕困难。");
}
}
public class function2 {
public static void main(String[] args) {
int sum = sum(10, 20);
System.out.println(sum);
}
public static int sum(int x, int y) {
int s = x + y;
return s;
}
}
四、运算符
4.1 算数运算符
4.2 赋值运算符
赋值运算符作用是将一个值赋给一个变量, 运算顺序从右到左
4.3 关系运算符
关系运算符作用是比较两边的操作数, 结果总是 boolean 型的。
4.4 逻辑运算符
逻辑运算符用于对 boolean 型结果的表达式进行运算, 运算结果总是 boolean 型, 后面结合条件结构讲解。
4.5 字符串连接运算符“+”
String s=“He” + “llo”; 结果"Hello"
"+"除了可用于字符串相连接, 也能将字符串与其它的数据类型相连成一个新的字符串。
如: String s=“x” + 123; 结果"x123
public class operator {
public static void main(String[] args) {
String text1 = "Hello";
String text2 = "smile";
// + 左右只要有一边是字符串,就是字符串连接符,而不是数值加法运算符
String text3 = text1 + text2;
System.out.println(text3);
}
}
4.6 三目运算符
X ? Y : Z
X 为 boolean 类型表达式, 先计算 x 的值, 若为 true, 整个三目运算的结果为表达式 y 的值, 否则整个运算结果为表达式 z 的值。
例:
int score = 75;
String type = score >=60 ? “及格” : “不及格”;
public class operator {
public static void main(String[] args) {
// boolean结果表达式?表达式1:表达式2
int a = 10;
int b = 20;
System.out.println(a < b ? "a小于b" : "a大于等于b");
}
}
4.7 操作符优先级
运算符的优先次序
表达式的运算按照运算符的优先顺序从高到低进行,同级运算符从左到右进行:
五、转义字符
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。