Java基础语法
一、二进制
二进制,逢二进一,可以类比十进制。例如:1,10,101,1011,10111;
- 二进制转化为十进制一般使用加权展开式的方法
例如:10111=1×20+1×21+1×22+0×23+1×2^4=23;
-
十进制转换为二进制:除2取余法
例如:10转换为2进制数
结果为1010。
-
计算机中的存储单位:
- 字节:1字节=8位,表示作为一个完整处理单位的8位2进制数码。
- 位:表示一个2进制数码0或1,计算机存储处理信息最基本的单位。
二、变量
1.变量
- 定义:系统微程序分配的一块内存单元,用来存储各种类型的数据。存储的数据可以改变,所以叫变量。
- 变量相当于一个容器,用来存储数据
2.变量分类
-
按所属数据类型划分
-
基本数据类型变量:数值型(byte,short,int,long,float,double)、布尔型(boolean)、字符型(char)
-
引用数据类型变量:类,接口,数组
-
-
按被声明位置划分
-
成员变量:定义在方法或语句块内部的变量
-
局部变量:定义在方法外部、类内部的变量
public class Demo{ static int a;//局部变量 public static void main(String[] args){ int b;//成员变量 } }
-
3.数据类型
类型 | 占用内存 | 值范围(含边界值) | 默认值 |
---|---|---|---|
整数型(int) | 4字节 | -231~231-1 | 0 |
端整数型(short) | 2字节 | -215~215-1 | 0 |
长整数型(long) | 8字节 | -263~-263-1 | 0 |
字节型(byte) | 1字节 | -27~27-1 | 0 |
浮点型(float) | 4字节 | 0.0f | |
双精度型(double) | 8字节 | 0.0d | |
布尔型(boolean) | 1字节 | true或false | flase |
字符型(char) | 0字节 | ‘\u0000~u\ffff’ | ‘\u0000’ |
4.变量创建语法
-
创建变量并初始化:数据类型 变量名= 初始化值;
-
创建变量不初始化:数据类型 变量名;
-
重新给变量赋值: 变量名 = 值;
public class Demo3 { public static void main(String[] args) { //创建变量并初始化 int a = 0; //创建变量不初始化 int b ; System.out.println("a = " + a); //重新给变量赋值语法:变量名 = 值; a = 30; System.out.println("a = " + a); } } /* 结果: a = 0 a = 30 */
5.float,long,char类型变量定义注意事项
public class Demo5 {
public static void main(String[] args) {
//1.float类型变量的定义
//注意:直接写出的浮点数字,默认类型为double,会提示需要强制转换
//解决:在浮点数后面加上f
float f1 = 10.1f;
//2. long类型变量定义
//注意:直接写出的整数,默认类型为int
//解决:整型数字后面加l表示我们写的整型数据为long型
long l1 = 22000000000l;
// char类型在使用时可以作为整数输出
char c1 = 'A';
System.out.println(c1);
System.out.println((int)c1);
}
}
/*
结果:
A
65
*/
三、数据类型转换
1.自动类型转换
-
容量小的类型自动转换成容量大的数据类型
-
byte,short,int -> float ->long ->double
byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型
2.强制类型转换
- 容量大的类型转换成容量小的数据类型时,要加上强制转换符
3.注意事项
- boolean类型不能转换成其他任何数据类型
public class Demo4 {
public static void main(String[] args) {
byte b = 127;
int i = b;
System.out.println(i);
//强制类型转换:变量1 = (要强制转换的类型) 变量2;
b = (byte)i;//强制转换有可能导致精度丢失
System.out.println(b);
}
}
/*
结果:
127
127
*/
四、方法简述
1.方法定义
- 一段特定的逻辑功能的封装。主要要素:权限修饰符,方法名,参数列表,返回值
2.定义格式
权限修饰符 返回值类型 方法名称(参数列表){
方法中封装的逻辑功能;
return 返回值;
}
但需要注意,我们在定义方法的时候还需要在权限修饰符与返回值类型中间加static关键字
public class Demo6 {
public static void main(String[] args) {
say();
int s = sum(10,20);//定义整型变量s接收sum方法的返回值
System.out.println("s = " + s );
}
//方法,变量命名规范:如果有多个单词,则从第二个单词开始首字母大写
public static void say() {
System.out.println("床前明月光,");
System.out.println("疑是地上霜。");
System.out.println("举头望明月,");
System.out.println("低头思故乡。");
}
//带有返回值的方法定义
public static int sum(int num1,int num2) {
int x = num1 + num2;
return x;
}
}
/*
结果:
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
s = 30
*/
3.权限修饰符详解
访问修饰符 | 同一个类 | 同一个包 | 不同包,子类 | 不同包,非子类 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
五、运算符
1.算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 5+5=10 |
- | 减 | 5-4=1 |
* | 乘 | 5*3=15 |
/ | 除(整除) | 10/3=3 |
% | 取模(求余数) | 10%3=1 |
++ | 自增(前,后) | |
– | 自减(前,后) |
-
自增(自减)符说明(i++/++i)
-
i++:先使用i的值,然后再把i的值+1
-
++i:先把i的值+1,然后再使用i的值
public class test{ public static void static(String[] args){ int i = 1,j = 1; int a = i++; int b = ++j; System.put.println("a = " + a);//a = 1; System.put.println("b = " + b);//b = 2; } } /* 结果: a = 1; b = 2; */
2.赋值运算符
运算符 | 示例 |
---|---|
= | a=3; |
+= | a+=b ==>a = a+b |
-= | a-=b ==>a = a-b |
*= | a*=b ==>a = a*b |
/= | a/=b ==>a = a/b |
%= | a%=b ==>a = a%b |
3.关系运算符
运算符 | 示例 | 结果 |
---|---|---|
== | 4==4 | true |
!= | 4!=4 | false |
< | 3<4 | true |
> | 3>4 | false |
<= | 3<=4 | true |
>= | 3>=4 | false |
4.逻辑运算符
运算符 | 示例 | 结果 |
---|---|---|
& | false & true | false |
| | false | true | true |
^(异或) | true^false | false(相同为0,不同为1) |
!(非) | !true | false |
&&(短路与) | false && true | false |
||(短路或) | false || true | true |
- 在计算机中默认0为假,非0位真
- &&与&的区别:如果运算符两边均为一个boolean类型表达式,如果已经计算出了第一个表达式的结果是flase,则会直接给出结果false,不会继续计算后面的表达式,而&运算符则会继续计算后面的表达式,||与|和这个类似;
5.字符串连接运算符
public class Demo7 {
public static void main(String[] args) {
String text1 = "Hello";
String text2 = "XinZhiKe";
System.out.println(text1 + text2);
String text3 = "Java" + 100;
System.out.println(text3);
System.out.println(text1 + 100);
}
}
/*
结果:
HelloXinZhiKe
Java100
Hello100
*/
- 如果’+'两边的任意一边有字符串,则拼接结果就会变成字符串。
6.三目运算符
X ? Y : Z
X 为 boolean 类型表达式,先计算 x 的值,若为 true,整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
public class Demo8 {
public static void main(String[] args) {
//boolean结果表达式?值1:值2
//如果boolean表达式结果为true,则返回值1,否则返回值2
int a = 20;
int b = 30;
int c;
c = a<b?a:b;
System.out.println("c的值为:" + c);
}
}
//输出结果:c的值为:20
六、变量作用域
1.成员变量
-
在类体中定义的变量,在整个类中都有效,分为静态变量和实例变量
class var{ int x = 45; static int y = 90; }
-
x为实例变量,y为静态变量(类变量)。
-
静态变量的有效范围可以跨类,打到这个那个应用程序内。对于静态变量,还能直接以"类名.静态变量"方式在其他类内使用
2.局部变量
-
局部变量只会在当前代码块中生效。
-
局部变量只在当期那定义的方法内有效,不能用于类的其他方法。
-
当局部变量与成员变量名字相同时,成员变量在此方法中暂时失效。
public class Val{ static int times = 3; //定义成员变量times public static void main(String[] args){ int times = 4//定义局部变量times System.out.println("times的值为:" + times); } } //结果:times的值为:4