Java
基础语法:
标识符选取:见名知意且不能与关键字重名
是内存中的一小块区域,使用变量名来访问这块区域,因此每一个变量使用前都需要先声明,然后必须进行赋值再进行使用
局部变量:方法或语句块内部声明的变量
成员变量:方法外部,类的内部声明的变量
在大括号内的变量,在大括号外是无法使用的
public class Main {
static int j = 2;
//int k = 2;
public static void main(String[] args) {
int i = 1;
System.out.println(i);
System.out.println(j);
//System.out.println(k);
}
//System.out.println(i);
}
数据类型:
逻辑性:boolean(true,false)不可以转换为其他的数据类型
文本型:char(Unicode全球语言统一编码:每个字符占两个字节(一个字节占8位),可用十六进制编码形式表示)
整数型:byte(1),short(2),int(4),long(8)
浮点类型:float(4),double(8)
java语言整形常量的三种表示形式:
-
十进制整数,如:12,-314,0
-
八进制整数:要求以0开头,如:012
-
十六进制数,要求0x或0X开头,如:0x12
-
整型常量默认为int型,声明long型常量可以在后加’l’或’L’,
如:long i1=888888888888L
浮点类型:float,double
-
十进制数形式,如:3.14 314.0 .3144
-
科学计数法形式,如:3.14e2 3.14E2 100E-2
-
浮点类型常量默认为double型,如果要声明一个float型,则需要在数字后面加’f‘或’F‘,
如:float f =12.3f
基本数据类型转换:
-
boolean类型不可以转换为其他的数据类型
-
整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
1、容量小的类型自动转换为容量大的数据类型;
数据类型按容量大小排序为:byte,short,chat->int->long->float->double
byte、short、char之间不会相互转换,他们三者在计算时首先会转换为int类型
2、容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意
3、有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算
// public static void main(String[] args){
// int a=100;
// //int b=888888888888888888888888888;
// //long b = 888888888888888; //必须加L
// long b = 888888888888888L;
//
// double c = 3.14;
// //float d = 12.3; //必须加f
// float d = 12.3f;
// int e = (int)12.3;
//
// System.out.println(a+","+b);
// System.out.println(c+","+d+","+e);
// }
public static void main(String[] args) {
int i=1, j;
//j = j + 10; //j未被赋值
i = i/10;
//i = i*0.1; //0.1是一个浮点型字面量
i =(int) (i * 0.1);
//long l1 = 12345678, l2 = 88888888888; //long类型应在数字后加L或l
long l1 = 12345678L, l2 = 88888888888L;
byte b1 = 1, b2 = 2, b3=127; //b3=129 //byte最大为127
//byte b = b1 - b2;
byte b = (byte)(b1 - b2);
double d1 = 2e20, d2 = 124;
double d = d1*i +b;
float f1 = 0.1F, f2 = 1.23F;
float f3 = f1 + f2;
//float f4 = f1 + f2*0.1; //f2*0.1后为double类型
float f4 = f1 + (float)(f2*0.1);
float f = (float)(d1*5 + d2);
}
程序的格式:
1、大括号对齐
2、遇到{时缩进
3、程序块之间加空行
4、并排语句之间加空格
5、运算符两侧加空格
6、{前面有空格
7、成对编程
运算符:
算术运算符:+,-,*,/,%,++,–
关系运算符:>, <, >=, <=, ==, !=
逻辑运算符:!(逻辑非),&(逻辑与),|(逻辑或),^(逻辑异或), &&(短路与), ||(短路或)
位运算符:&, |, ^, ~, >>, <<, >>>
赋值运算符:=
扩展赋值运算符:+=, -=, *=, /=
字符串连接运算符:+
自加和自减运算符:++(–) 在前时先运算再取值,在后时先取值再运算
public static void main(String[] args){
int i1= 10, i2 = 20;
int i = (i2++);
System.out.println("i=" + i); //20
System.out.println("i2=" + i2);//21
i = (++i2);
System.out.println("i=" + i); //22
System.out.println("i2=" + i2); //22
i = (i1--);
System.out.println("i=" + i); //10
System.out.println("i2=" + i1); //9
i = (--i1);
System.out.println("i=" + i); //8
System.out.println("i2=" + i1); //8
}
逻辑运算符:
public static void main(String[] args){
boolean a, b, c;
a = true;
b = false;
c = !a; System.out.println(c); //f
c = a & b; System.out.println(c); //f
c = a | b; System.out.println(c); //t
c = a ^ b; System.out.println(c); //t
c = a && b; System.out.println(c); //f
c = a || b; System.out.println(c); //t
int i = 1, j = 2;
boolean flag1 = (i > 3) && ((i + j) > 5);//i > 3 为false,所以flag1为false,第二个操作数将不再计算
System.out.println(flag1);
boolean flag2 = (i < 2) || ((i + j) < 4);//i < 2 为true, 所以flag2为true, 第二个操作数将不再计算
System.out.println(flag2);
}
赋值运算符与扩展赋值运算符:
字符串连接运算符:
- “+”除用于算术加法运算外,还可以用于对字符串进行连接操作
int id = 800 + 90
String s = “hello” + “world”
- "+"运算符两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串类型(String)然后再进行连接
int c = 12;
System.out.println(“c=” + c);
-
进行打印时,无论任何类型,都自动转换为字符串类型进行打印
System.out.println©;
表达式:
表达式是符合一定语法规则的运算符和操作数的序列
表达式的运算顺序:
按照运算符的优先级从高到低的顺序进行
优先级相同的运算符按照事先约定的结合方向进行
三目条件运算符:
三目条件运算符,语法格式: x ? y : z
其中x为boolean类型表达式,先计算x的值,如果为true则运算结果为y,相反则为z
public static void main(String[] args){
int score = 80; int x = -100;
String type = score < 60 ? "不及格" : "及格"; //及格
int flag = x > 0 ? 1 : (x == 0 ? 0 : -1); //-1 遇到复杂的表达式从里到外计算
System.out.println("type=" + type);
System.out.println("flag=" + flag);
}
循环语句:
if else语句:
if else语句形式:
if…else
if…else if
if…else if…else if
if…else if…else if …else
只有一句需要执行的语句时,可以省略{}(但是建议不要省略,容易出错)
for语句:
for语句形式:
for(表达式1;表达式2;表达式3){
语句;
… ;
}
执行过程:
首先计算表达式1,接着执行表达式2,若表达式2的值为true则执行语句,然后接着执行表达式3,再判断表达式2的值,依此重复执行下去,直到表达式2的值为false
public static void main(String[] args){
long result = 0;
long f = 1;
for(int i = 1; i <= 10; i++){
f = f * i;
result += f;
}
System.out.println("result=" + result);
public static void main(String[] args){
long result = 0;
for(int i = 1; i <= 99; i+=2){
result += i;
}
System.out.println("result=" + result);
}
while & do while 语句:
while语句形式:
while(逻辑表达式){
语句;
…;
}
执行过程:
先判断逻辑表达式的值。如果为true,则执行后面的语句,然后再次判断条件并反复执行,直到条件为false为止
do while语句形式:
do{
语句;
…;
}
while(逻辑表达式);
执行过程:
先执行语句,再判断逻辑表达式的值。如果为true,则执行语句,然后再次判断条件并反复执行,直到条件为false为止
public static void main(String[] args) {
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
i = 0;
do {
i++;
System.out.println(i);
}
while (i < 10);
}
break & continue 语句:
break语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;
int stop = 4;
for(int i = 1; i <= 10; i++){
if(stop == i) break;
System.out.println("i=" + i);
}
//输出1~100内前5个可以被3整除的数
int num = 0;
int i = 1;
while(i < 100){
if(i % 3 == 0 ) {
System.out.print(i + " ");
num++;
}
if(num == 5) {
break;
}
i++;
}
continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程:
int stop = 4;
for(int i = 1; i <= 10; i++){
if(stop == i) continue;
System.out.println("i=" + i);
}
//输出101~200内的质数
for(int i = 101; i < 200; i+=2){
boolean f = true;
for(int j = 2; j < i; j++){
if(i % j ==0){
f = false;
break;
}
}
if(!f){
continue;
}
System.out.print(i + " ");
}
Switch语句(条件语句补充):
switch(条件){
case xx:
…;
case xx:
…;
case xx:
…;
case xx:
…;
default:
…;
}
- 小心case穿透,推荐使用break语句
- 多个case可以合并在一起
- default可以省略,但不推荐省略
- java中switch语句只能探测int类型值(条件内为int类型)
public static void main(String[] args){
int i = 8;
switch(i){
case 2 :
System.out.println("A");
break;
case 7:
System.out.println("B");
break;
case 4:
System.out.println("C");
break;
case 8:
System.out.println("D");
break;
default:
System.out.println("error");
}
}
方法:
java的方法类似于其它语言的函数,是一段用完成特定功能的代码片段
- 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void
- 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配
- return语句终止方法的运行并指定要返回的数据
public static void main(String[] args){
m();
m2(4);
m3('3',4);
int i = m4(4, 6);
System.out.println(i);
}
public static void m(){
System.out.println("ok");
System.out.println("hello");
}
public static void m2(int i){
if(i < 3)
return;
System.out.println(i);
}
public static void m3(int i, int j){
System.out.println(i + j);
}
public static int m4(int i, int j){
return i > j ? i : j;
}