本文主要是介绍Java基础知识大概总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
潦草的总结
1、第一个程序
1、代码示例
public class HelloWorld{public static void main(String[] args){System.out.println("Hello World!");}
}
2、注释
1、单行注释://
2、多行注释:/* */
2、初识类
1、一个java源文件中可以定义多个class类。
2、在java源文件中只要有一个class的定义,必然会对应生成一个class的文件。
3、public修饰的类不是必须的,可以没有。
4、public修饰的类如果有的话,public修饰的类名必须和源文件的文件名一致。
5、一个java源文件只能有一个public修饰的类。
6、示例代码
public class Test{public static void main(String[] args){System.out.println("Test");}
}
class Test2{}
class Test3{}
3、标识符和关键字
1、标识符:凡是程序员可以自己命名的单词都是标识符。
2、标识符的命名规则:
- 标识符必须有字母(包括中文)、数字、下划线(_)、美元符号($)组成,不能含有其他符号。
- 标识符不能以数字开头。
- 标识符不能是关键字或保留字。
- 标识符严格区分大小写。
- 标识符理论上没有长度限制。
3、标识符的命名规范:
- 接口名和类名首字母大写,后面每个单词的首字母大写,遵循驼峰命名规则。
- 变量名和方法名首字母小写,后面每个单词的首字母小写,遵循驼峰命名规则。
- 常量名的所有字母全部大写,多个单词之间使用下划线连接(_)。
- 见名知意。
4、变量
1、变量:变量是内存中存储数据的最基本的单元,可以看作是一个存储数据的盒子。
2、变量的声明赋值:数据类型 变量名 = 变量值
3、变量可以重新赋值。
4、变量的分类:在类体内、方法体外声明的变量是成员变量,在方法体内声明的变量是局部变量,局部变量只在当前方法中有效,方法执行完毕之后该变量会被释放。
5、示例代码:
package test;public class Test {public static void main(String[] args) {String name = "张三"; //String类型的变量int age = 18; //int类型的变量System.out.println(name + "今年" + age + "岁"); //访问变量}
}
5、数据类型
1、java中的数据类型
数据类型 | 占用字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
boolean | 1 |
char | 2 |
2、int
public class Test {public static void main(String[] args) {//在java语言中,整数类型字面量有4种表示形式:二进制、八进制、十进制、十六进制int a = 0b10; //二进制System.out.println(a); //2int b = 010; //八进制System.out.println(b); //8int c = 10; //十进制System.out.println(c); //10int d = 0x10; //十六进制System.out.println(d); //16}
}
public class Test {public static void main(String[] args) {/*在java语言中,整型字面量默认被当做int类型处理,如果希望字面量被当做long来处理,需要在字面量后面加上l/L,建议大写L,小写l和1傻傻分不清*/int a = 100;System.out.println(a);long b = 200; //存在自动类型转换,小容量自动转换为大容量System.out.println(b);long c = 300L; //不存在自动类型转换System.out.println(c);long d = 2147483647; //正确,int类型最大值是2147483647System.out.println(d);/*错误,编译器先将2147483648看作是int类型的数值,而2147483648超出了int类型的最大值,所以在没有赋值之前就已经报错了long e = 2147483648; //Error:(24, 18) java: 整数太大System.out.println(e);*/long f = 2147483648L; //正确System.out.println(f);}
}
3、自动类型转换:小容量自动转换为大容量
byte-->short-->int-->long-->float-->double
char-->int-->float-->double
4、强制类型转换:数据类型 变量名 = (数据类型) 变量名,存在精度损失
public class Test {public static void main(String[] args) {long x = 100L;System.out.println(x);long y = (int)x;System.out.println(y);}
}
5、当一个整型字面量的值没有超出byte/short的取值范围的时候,这个字面量可以直接赋值给byte/short类型的变量。
public class Test {public static void main(String[] args) {byte a = 127; //正确System.out.println(a);/*Error:(7, 18) java: 不兼容的类型: 从int转换到byte可能会有损失byte b = 128; System.out.println(b);*/short x = 32767; //正确System.out.println(x);/*Error:(12, 19) java: 不兼容的类型: 从int转换到short可能会有损失short y = 32768; System.out.println(y);*/}
}
6、计算机在任何情况下都只能识别二进制,计算机在底层存储数据的时候,一律存储的是二进制的补码形式。正数的原码、反码、补码一样,负数的反码是原码符号位不变,其余位按位取反,补码是反码加一。
public class Test {public static void main(String[] args) {/*对于一个正数来说:二进制原码、反码、补码是同一个,完全相同int i = 1;对应的二进制原码:00000000 00000000 00000000 00000001对应的二进制反码:00000000 00000000 00000000 00000001对应的二进制补码:00000000 00000000 00000000 00000001对于一个负数来说:反码是原码符号位不变,其余位按位取反,补码是反码加一byte i = -1;对应的二进制原码:10000001对应的二进制反码(符号位不变,其它位取反):11111110对应的二进制补码(反码+1):11111111*/byte b = (byte)150;System.out.println(b); //-106}
}
public class Test {public static void main(String[] args) {//byte、short、char做混合运算时,各自先转换为int类型再运算char c = 'a';byte b = 1;System.out.println(c + b); //98/*Error:(14, 21) java: 不兼容的类型: 从int转换到short可能会有损失short s = c + b;short s = (short)c + b;编译器不知道这个加法的最终结果是多少,只知道是int类型的*/short s = (short)(c + b);/*Error:(19, 19) java: 不兼容的类型: 从int转换到short可能会有损失int a = 1;short x = a;编译器只知道a是int类型的,并不知道a中存放的值是多少*/}
}
7、浮点型数据:默认数据类型是double
public class Test {public static void main(String[] args) {//Error:(5, 19) java: 不兼容的类型: 从double转换到float可能会有损失//float f = 100.47;float f = 100.47F; //正确//float f = 100.47f; //正确//float f = (float)100.47; //正确System.out.println(f);}
}
8、boolean类型只有两个值:true和false,不参与类型转换
9、char:用单引号引起来的单个字符
6、运算符
1、从键盘输入
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner s = new Scanner(System.in);//接收一个整数int num = s.nextInt();System.out.println("输入的整数是:" + num);//接收一个字符串String str = s.next();System.out.println("接收的字符串是:" + str);}
}
2、算术运算符
算术运算符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
i++ | i先运算,然后i的值自加1 |
++i | i的值先自加1,再运算 |
i– | i先运算,然后i的值自减1 |
–i | i的值先自减1,再运算 |
import java.util.Scanner;public class Test {public static void main(String[] args) {int x = 10;int y = x++;System.out.println("x="+x+",y="+y); //x=11,y=10int z = ++x;System.out.println("x="+x+",z="+z); //x=12,z=12int i = 10;int j = i--;System.out.println("i="+i+",j="+j); //i=9,j=10int k = --i;System.out.println("i="+i+",k="+k); //i=8,k=8}
}
3、关系运算符
关系运算符 | 说明 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 大于 |
!= | 不等于 |
注:= | 赋值运算符 |
4、逻辑运算符
逻辑运算符 | 说明 |
---|---|
& | 逻辑与 |
| | 逻辑或 |
! | 逻辑非 |
&& | 短路与 |
|| | 短路或 |
短路与&&和逻辑与&的区别:首先这两个运算符的运算结果没有任何区别,完全相同。只不过“短路与&&”会发生短路现象。即当左边的表达式值为false的时候,右边表达式不执行,这种现象叫做短路现象。从效率方面来说,&&比&的效率高一些。因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。
短路或||和逻辑或|的区别与上同理。
5、赋值运算符
赋值运算符 | 说明 |
---|---|
= | |
+= | |
-= | |
/= | |
*= | |
%= |
public class Test {public static void main(String[] args) {//使用扩展运算符,永远不会改变表达式的运算结果byte b = 100;//b = b + 20;//Error:(9, 15) java: 不兼容的类型: 从int转换到byte可能会有损失b += 20; //正确,相当于b = (byte)(b+20);System.out.println(b); //120byte c = 127;c += 1;System.out.println(c); //-128,byte类型}
}
6、三目运算符
public class Test {public static void main(String[] args) {/*三目运算符:布尔表达式?表达式1:表达式2执行原理:布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果。*/int a = 10;String str = a>0 ? "a是正数" : "a是负数";System.out.println(str); //a是正数}
}
这篇关于Java基础知识大概总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!