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中最基本的引用数据类型,数组是一个容器,可以存储一组相同类型的数据,枚举是一种特殊的数据类型,用于定义一组常量,注解是一种用于为程序元素(类、方法、字段等)添加元数据的机制。
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值,表示对象引用为空。
2.2java中的变量
变量的定义:
在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内
存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定
义的标识符就是变量名内存单元中存储的数据就是变量的值。
在为变量赋值时必须赋予和变量同一种类型的值
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;
强制类型转换:当需要将一个数据类型强制转换为另一个类型时,可以使用强制类型转换。例如,将一个浮点数强制转换为整数类型。
2.3Java中的运算符
算术运算符:
运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如赋值运算符、算术运算符和比较运算符等。
(一)赋值运算符
赋值运算符以符号“=”表示,它是一个双目运算符(又对两个操作数做处理),其功能是将右边操作数所含的值赋给左边的操作数。
(二)比较运算符
比较运算符用于两个数值或变量进行比较,其结果是一个布尔值,即true和false
注意:比较运算符在使用时需要注意一个问题,不能将比较运算符“==误写成赋值运算符“=”
(三)自增和自减运算符
自增和自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。自增和自减运算符的作用是使变量的值增1或减1.
a++; ++a a--; --a符合在前 ++i --i 先计算后使用
符 合在后 i++ i-- 先使用后计算
四)逻辑运算符
逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型。
1.JAVA的转义字符
转义字符是用反斜杠(\)作为前缀,用来表示一些特殊的字符或字符序列,例如换行符、制表符、双引号、单引号等。
\n:表示换行符。
\t:表示制表符。
\b:表示退格符。
\r:表示回车符。
\f:表示换页符。
':表示单引号。
":表示双引号。
2.java的其他运算符
1.算术运算符: 用于对数值进行基本的算术运算,包括加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)。
2.关系运算符:用于比较两个值的关系,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
3.罗辑运算符:用于对布尔值进行逻辑运算,包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
1为真 0为假&&两者为真,结果才为真||一者为真,则都为真!非真即假,非假即真^两者相同为0,不同为1
4.位运算符:用于对二进制数据进行位运算,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)。
5.赋值运算符:用于将一个值赋给变量,包括赋值(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)和取模等于(%=)。
6.其他运算符:包括三目运算符(? :)和 instanceof 运算符等。
自增(++)和自减(--)运算符,用于对变量进行加1或减1的操作。
JAVA流程控制语句及方法
(一)选择结构
(1)if语句
if语句是指如果满足某种条件,就进行某种处理,其语法格式如下所示:
if(条件语句){
代码块
}
2)if..else语句
if...else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理,其语法格式如下所示:
if(判断语句){
执行语句1
} else{
执行语句2
}
if...else语句的执行流程图如下:
(3)if...else多分支语句
if...else if ...else语句用于对多个条件进行判断,进行多种不同的处理,其语法格式如下所示:
if(判断语句){
执行语句1
} else if(判断条件2){
执行语句2
}
...
else if(判断条件n){
执行语句n
}else{
执行语句n+1
}
if...else多分支语句的执行流程图如下:
(4)switch条件语句
switch语句也是一种很常见的选择语句。和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定执行哪一段代码。
在switch语句中,使用switch关键字来描述一个表达式,使用case关键字来描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句,switch语句的基本语法结果:
Switch(表达式){
case 常量值1:
语句块1;
break;
....
case 常量值n:
语句块n;
break;
default:
语句块n+1;
break;
}
(二)循环结构
(1)while语句
while语句和if条件语句有点类似,都是根据条件判断来决定是否执行后面的代码,区别在于,while循环语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立while循环结束。
while循环语句的语法结构如下所示:
while(条件表达式){
语句序列
}
while语句的执行流程图如下:
2)do...while循环语句
do...while循环语句和while循环语句功能类似,其语法结构如下所示:
do{
语句序列
}while(条件表达式)
3)for循环语句
for循环语句是最常用的循环语句,一般用在循环次数已知的情况下,其语法格式如下所示:
for(表达式1;表达式2;表达式3){
语句序列
}
4)嵌套循环
嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do...while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环格式如下:
for(初始化表达式;循条件;操作表达式) {
...
for(初始化表达式;循环条件; 操作表达式){
执行语句
.....
}
....
}
数组
(一)数组的定义
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) 一维数组
一组具有相同数据类型的连续内存空间,它们按照一定的顺序排列在内存中。数组中的每个元素都可以通过其下标来访问,下标从0开始,依次递增。一旦定义和初始化完成后,数组的长度就不能再进行更改。可以通过下标来访问数组中的元素
需要注意的是,数组下标越界会导致程序运行时错误。因此,当访问数组元素时,需要确保下标值在合法范围内。另外,Java中的数组是引用类型,因此可以作为参数传递给方法,并且可以使用Java提供的Arrays类来进行一些常见的数组操作,如排序、查找等。
(2) 二维数组
二维数组中的每一行可以拥有不同的元素个数,但是在同一行中的元素个数必须相同。在定义和初始化二维数组时,只需要指定行数和列数即可,Java会根据指定的行数和列数来为二维数组分配内存空间。
12.方法
为了解决代码重复编写的问题,可以将代码提取出来放在一个{}中,并为这段代码Q个名字,这样通过这个名字来条用代码就行
上述过程中,所提取出来的代码可以被看做是程序中定义的一个方法,程序需要使用是条用该方法就可以.
定义成员方法的语法格式如下:
极限修饰符 返回值类型 方法名(参数类型 参数名){
...//方法体
return 返回值;}
java允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载.
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("肥胖");
}
}
}
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);
}
}
package 数组;
public class Exanple32 {
public static void main(String[] args) {
int[][] arr=new int[3][];// 定义一个长度为3的二维数组
arr[0]=new int[] {11,12};// 为数组的元素赋值
arr[1] = new int[] {21,22,23};
arr[2] = new int[] {31,32,33,34};
int sum = 0;// 定义变量记录总销售新
for(int i =0 ;i < arr.length ; i++){
int gropusum = 0;// 定义变量记录小组的销 v拜拜 售额
for(int j = 0 ; j < arr[i].length ; j++){
gropusum = gropusum +arr[i][j];
}
sum=sum+gropusum;
System.out.println("第"+(i+1)+"小组 销售额为"+ gropusum+"万元");
}
System.out.println("总销售额为:" +sum + "万元");
}
}