java的基础知识
sout + TAB //输出System.out.print
psvm + TAB//输出public static void main(String[] args){
shift + F6 //重命名变量 CTRL +I //注解该行代码
CTRL + Y //删除该行代码 CTRL + SHIFT + 上下键//移动代码位置
F11 为当行代码添加书签 CTRL +D//复制该行代码
在Java中,每个程序都必须至少有一个类。该类被称为主类(入口点类)
,它包含了程序的入口点(即main()方法)。
Java编程基础
1.Java的基本语法
在Java中,每个程序都必须至少有一个类。该类被称为主类或入口点类,它包含了程序的入口点(即main()方法)。
这段代码定义了一个公共的类名为Main,并且包含了一个静态方法名为main(),该方法的参数是一个字符串数组。当程序启动时,JVM会自动查找这个类,并且执行main()方法里的代码。
main()方法必须是静态的,因为在调用main()方法时,还没有实例化该类的对象,所以只能使用静态方法。而且,main()方法的返回类型必须是void,它不会返回任何值。
参数args是一个字符串数组,它包含了命令行参数,可以通过这个参数来传递输入信息。在main()方法中,你可以使用这个参数来接收和处理输入数据。
这就是Java主类的基本结构,你可以在这个类里定义其他方法和变量,但是只有main()方法是程序的入口点。
类和接口是Java中最基本的引用数据类型,数组是一个容器,可以存储一组相同类型的数据,枚举是一种特殊的数据类型,用于定义一组常量,注解是一种用于为程序元素(类、方法、字段等)添加元数据的机制。
在Java中,包(Package)是用来组织类和接口的一种机制,可以将相关的类和接口放在同一个包中。包声明是指在Java源文件的开头使用package语句来指定该文件中的类或接口所在的包。
包声明的作用有以下几个方面:
避免类名的冲突。通过将相关的类和接口放在同一个包中,可以避免不同包中的类和接口名称的冲突。
提高代码的可维护性。通过组织相关的类和接口,可以方便开发者查找和修改代码。
控制访问权限。包中的类和接口可以使用访问修饰符来控制其访问权限,从而提高代码的安全性和可靠性。
2.Java的标识符
标识符由字母、数字、下划线和美元符号组成,但是第一个字符必须是字母或下划线。标识符不能是Java的关键字,也不能包含空格或其他特殊字符
关键字有特殊的语法意义,例如if表示条件语句,while表示循环语句等等。在编写Java程序时,需要避免使用这些关键字作为标识符。
3.Java的常量
常量是在程序中固定不变的值,是不能改变的数据。
1.整形常量,浮点数常量(例如小数点)、布尔常量(真假)、字符常量
整形常量表现形式有四种:
二进制、八进制、十进制。
整数以十进制表示时,第一位不能时0,0本身除外
十六进制:0x或者0X开头且后由0~9、A~F(包括0和0、A和F)组成的数组序列。如0x25AF
2.浮点数常量
单精度浮点:以F或f结尾
双精度浮点:以D或d结尾
3.字符常量
表示一个字符用单引号‘’(英文输入法)引起来,如‘a'、’1‘、’\a'
4.字符串常量
用双引号“”(英文输入法)引起来,如“ ”、“hi”
5.布尔
判断真假两个值位true和false,区分于一个事物的真假
6.null常量
只有一个null值,表示对象引用为空。
4.JAVA的数据类型
可以分为两大类
1.原始数据类型
整数和小数取值范围 double>float>long>int>short>byte
以下8种:
1 boolean: 表示布尔值,只有两个取值: true和flase
2byte 表示8位的有符号整数, 取值范围为 -128到127。
3short :表示16位的有符号整数, 取值范围为-32768到32767。
4int: 表示32位的有符号整数, 取值范围为-2147483648到2147483647。
5 long: 表示64位的有符号整数,取值范围为-9223372036854775808到 9223372036854775807。
6 float:表示32位的单精度浮点数,取值范围为1.4E-45到3.4028235E38。
7 double:表示64位的双精度浮点数,取值范围为4.9E-324到1.7976931348623157E308。
8 char:表示16位的Unicode字符,取值范围为'\u0000'到'\uffff'。
2.引用数据类型
以下几种:
类(Class)
接口(Interface)
数组(Array)
枚举(Enum)
注解(Annotation)
5.JAVA的变量
在编程中,变量是用来存储数据的一种方法。在面向对象编程中,变量可以分为成员变量和局部变量。
1.变量的作用域
变量需要在他的作用范围才可以使用,这个范围称为变量的作用域。(一般是大括号内)
2.java变量的声明
在Java中,可以使用关键字final来声明常量。final关键字告诉编译器,这个变量只能被赋值一次,一旦被赋值,就不能再被修改。
需要注意的是,声明为final的变量在Java中是不可修改的,如果试图对其进行二次赋值,编译器会报错。因此,一般来说,常量的赋值应该在声明时进行,而不是在后面的代码中修改。
3.成员变量
是定义在类中的变量,用于描述一个类的属性和状态。这些变量可以在类的任何方法中使用,并且可以被类的任何对象访问。成员变量在声明时不需要初始化,因为它们会在类的对象创建时自动初始化。例如,在一个Person类中,成员变量可以包括姓名、年龄、性别等。
4.局部变量
是定义在方法内部的变量,只能在该方法内部使用。它们在方法中声明并初始化,当该方法执行完成后,这些变量会被自动销毁。局部变量的作用域仅限于声明它的方法。例如,在一个计算器方法中,局部变量可以包括数字、符号等。
Java中有两种类型转换:自动类型转换和强制类型转换。
6.java的数据类型转换
原始数据类型 | 参考数据类型 |
数量有限 | 数量无限 |
存储数据 | 存储地址 |
仅能容纳一个值 | 可以容纳多个值 |
1.自动类型转换
byte a = 3;
int b = a;
隐式类型转换,指的是转换的过程中不需要显式的进行声明
必须满足两个条件
第一是两种数据类型彼此兼容
第二时目标类型的取值范围大于源类型的取值范围
当两种数据类型兼容时,Java会自动将其中一个类型转换成另一个类型。例如,将一个整数类型转换为浮点数类型,或者将一个字符类型转换为整数类型。在自动类型转换时,会发生一些精度损失或者数据截断的情况。
2.强制类型转换
格式如下:
目标类型 变量 =(目标类型)值
int a =4;
byte b =(byte)a;
强制类型转换:当需要将一个数据类型强制转换为另一个类型时,可以使用强制类型转换。例如,将一个浮点数强制转换为整数类型。
7.Java的运算符
1.JAVA的转义字符
转义字符是用反斜杠(\)作为前缀,用来表示一些特殊的字符或字符序列,例如换行符、制表符、双引号、单引号等。
\n:表示换行符。
\t:表示制表符。
\b:表示退格符。
\r:表示回车符。
\f:表示换页符。
':表示单引号。
":表示双引号。
2.java的其他运算符
算术运算符: 用于对数值进行基本的算术运算,包括加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)。
关系运算符:用于比较两个值的关系,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
罗辑运算符:用于对布尔值进行逻辑运算,包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
1为真 0为假&&两者为真,结果才为真||一者为真,则都为真!非真即假,非假即真^两者相同为0,不同为1
位运算符:用于对二进制数据进行位运算,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)。
赋值运算符:用于将一个值赋给变量,包括赋值(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)和取模等于(%=)。
其他运算符:包括三目运算符(? :)和 instanceof 运算符等。
自增(++)和自减(--)运算符,用于对变量进行加1或减1的操作。
== | 比较左右是否相等 | 'a'='a' |
>= | 比较左侧是否大于等于右边 | 34>=23 |
<= | 比较左边是否小于右边 | 23<=33 |
!= | 比较左边是否不等于右边 | 'd'!='c |
8.JAVA的复合语句
Java的复合语句是一种将多条语句组合在一起执行的语句。在Java中,复合语句使用花括号({})来表示,所有位于花括号内的语句都被视为一个整体,称为一个代码块。
在复合语句中定义的变量,其作用域只限于该代码块内部,出了该代码块就无法访问该变量。
9.JAVA的选择结构语句
1.if语句
if(条件语句){
代码块
}
条件语句if是一种用于根据指定的条件选择执行特定代码块的控制语句。if语句根据一个布尔表达式的值(即真或假)来确定是否执行特定代码块。
在if...else语句中,当condition的值为true时,执行if代码块;当condition的值为false时,执行else代码块。
2.ifelse语句
if(判断条件)真{ 执行语句1--}
假else{ 执行语句2 --}
3.switch 语句
Java中的switch语句是一种用于根据一个表达式的值选择不同代码分支的流程控制语句。它通常用于取代一系列的if-else语句,以使代码更加简洁和易于阅读。
10.循环结构语句
1.,while循环语句
语句1
while(条件){
语句2}
语句3
1->条件真->2->...条件真->2->条件假->3
java中的while循环是一种重复执行代码块的语句,只要指定的条件为true,就会一直执行循环体中的语句。当条件变为false时,程序将跳出循环,并继续执行程序的下一条语句。while循环语句的基本语法如下:
2.do while 循环语句
do{执行语句...}
while(循环语句);
是一种先执行循环体中的语句,然后再判断循环条件是否成立的循环结构。
do-while循环先执行一次循环体中的语句,然后再进行循环条件的判断。如果循环条件成立,就继续执行循环体中的语句,并继续进行循环条件的判断;如果循环条件不成立,则退出循环。需要注意的是,无论循环条件是否成立,do-while循环至少会执行一次循环体中的语句。
与while循环相比,do-while循环的一个重要区别是循环条件的判断时机不同。在while循环中,循环条件是在循环体执行前判断的,因此如果循环条件一开始就不成立,while循环中的循环体不会执行;而在do-while循环中,循环条件是在循环体执行后判断的,因此即使循环条件一开始就不成立,do-while循环中的循环体也会执行一次。
3.for 循环语句
ava的for循环语句是一种常用的循环结构,通常用于遍历集合或数组等数据结构。
跳转循环语句
在Java中,break语句是一种用于循环控制的关键字,通常用于在循环中提前终止循环的执行,即跳出循环体。当break语句被执行时,程序会立即跳出循环,继续执行后续的代码。
break语句通常与条件语句一起使用,例如在for循环或while循环中,如果满足某个条件就需要提前结束循环,可以使用break语句来实现。
Java中的continue语句用于在循环结构中提前结束当前循环的迭代,然后开始下一次迭代。具体来说,当continue语句被执行时,程序将跳过当前循环迭代中剩余的语句,然后进入下一次迭代,即从循环体的开始处重新执行。
continue语句通常用于需要跳过某些特定条件下的循环迭代的情况,
11.数组
int[]x = new int[100];
上述语句就相当于在内存中定义了100个int类型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第100个变量的名称为x[99],这些变量的初始值都是0.
int[] x;//声明一个int[]类型的变量
x = new int [100]; //创建一个长度为100的数值
在java中,为了方便我们获得数组的长度,提供了一个length属性,在程序中可以通过“数组名.length”的方式来获得数组的长度,即元素的个数。
1.静态初始化
数组的静态初始化有两种方式:
1.类型[] 数组名 =new 类型[] (元素,元素,~~);
int[]arr = new int[](1,2,3,);(不能再[]编数)
int[]arr = (1,2,3,4);
(1) 一维数组
一组具有相同数据类型的连续内存空间,它们按照一定的顺序排列在内存中。数组中的每个元素都可以通过其下标来访问,下标从0开始,依次递增。一旦定义和初始化完成后,数组的长度就不能再进行更改。可以通过下标来访问数组中的元素
需要注意的是,数组下标越界会导致程序运行时错误。因此,当访问数组元素时,需要确保下标值在合法范围内。另外,Java中的数组是引用类型,因此可以作为参数传递给方法,并且可以使用Java提供的Arrays类来进行一些常见的数组操作,如排序、查找等。
(2) 二维数组
二维数组中的每一行可以拥有不同的元素个数,但是在同一行中的元素个数必须相同。在定义和初始化二维数组时,只需要指定行数和列数即可,Java会根据指定的行数和列数来为二维数组分配内存空间。
12.方法
为了解决代码重复编写的问题,可以将代码提取出来放在一个{}中,并为这段代码Q个名字,这样通过这个名字来条用代码就行
上述过程中,所提取出来的代码可以被看做是程序中定义的一个方法,程序需要使用是条用该方法就可以.
定义成员方法的语法格式如下:
极限修饰符 返回值类型 方法名(参数类型 参数名){
...//方法体
return 返回值;}
java允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载.
BMI指数:
public class BMI指数 {
public static void main(String[] args) {
// TODO Auto-generated method stub
double height = 1.75; //身高变量,单位:米
int weight = 72; //体重变量,单位:千克
double exponent = weight / (height * height); //BMI计算公式
System.out.println("你的身高为: " + height);
System.out.println("你的体重为: " + weight);
if (exponent < 18.5) {
System.out.println("体重过轻");
}
if (exponent >= 18.5 && exponent < 24.9){
System.out.println("正常范围");
}
if (exponent >= 24.9 && exponent < 29.9){
System.out.println("体重过重");
}
if (exponent >= 29.9) {
System.out.println("肥胖");
}
}
}
Unicode码
public class 查看字符与Unicode码互转的结果 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char word = 'd',word2 = '@';
int p = 23045,p2 = 45123;
System.out.println("d在 Unicode 表中的顺序位置是: " + (int)word);
System.out.println("@在 Unicode 表中的顺序位置是: " + (int)word2);
System.out.println("Unicode 表中的第23045位是: " + (char)p);
System.out.println("Unicode 表中的第45123位是: " + (char)p2);
}
}
例题
1.
2.
package 课本;
public class 例p60 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("欢迎光临,请问有多少人就餐?"); //输出问题提示
int count = 9; //用餐人数
System.out.println("回答: " + count + "人"); //输出回答
if(count <= 4) { //如果人数小于4人
System.out.println("客人请到大厅4人桌用餐"); //请到4人桌
}else if(count > 4 && count <= 8) { //如果人数在4~8人
System.out.println("客人请到大厅8人桌用餐"); //请到8人桌
}else if(count > 8 && count <= 16) { //如果人数在8~16人
System.out.println("客人请到楼上包间用餐"); //请到包厢
}else { //当以上条件都不成立时,执行该语句快
System.out.println("抱歉,我们店暂时没有这么大的包厢! "); //输出信息
}
}
}