一、java基础语法
1.java注意事项
1.对修改过后的java文件需要重新编译,才能够执行java
2.JAVA语言区分大小写
3.一个文件中最多只能够一个Public类,其他的类不限
4.每一个类最后编译的时候都对应一个.class文件
5.Public修饰的类必须作为文件名
public class Hello2{
//主函数
public static void main(String[] args){
System.out.println("wwl learning java");
}
}
2.注释介绍
被注释的文件不会被jVM 解释执行
单行注释
//comment
多行注释
/* comment */
文档注释 注释内容可以被jdk提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档
/** *@author wwl *version 1.0 */ javadoc -d D:\\temp -author -version Demo1.java
3.java代码规范
1.以类或者方法的时候要用javadoc来写
2.非javadoc的注释主要告诉为什么这样写
3.tab键选中向后移,shift+tab整体向左移动
4.远算符和等号两边最好加空格
int a = 10;
5.原文件使用utf-8
6.每一行字符不要超过80
7.次行风格 行尾风格
public class demo1{
行位风格
}
public class demo2
{
次行风格
}
4.DOS常用命令
- DOS介绍:DOS(Disk Operating System)磁盘操作系统
- 常用的命令
- dir dir d:\abc\text 查看当前目录有什么
- cd 切换到其他盘下、当前盘的其他目录
- cd… 切换到上一级
- cd \ 切换到根目录
- cls 清屏
- exit 退出DOS
5.变量
变量是基本的组成单位
变量有基本三要素 类型+名称+值
public class Hello{ //编写一个main方法 public static void main(String[] args){ int a = 1; //变量 System.out.println("hello,world~"); } }
int 整形
char 字符型
String 字符串
double 浮点型
变量的注意事项
1.变量的内存中一个存储区域,不同的变量,类型不同,占用的空间大小不同
int 4个字节 double 8个字节
2.该区域有自己的名称【变量名】和类型【数据类型】
3.变量必须先声明,后使用,既有顺序
4.该区域的数据/值可以在同一类型范围内不断变化
5.变量在同一作用域内不能重名
6.变量=变量名+值+数据类型。【变量三要素】
6.加号的使用
当加号两边是数字的时候做的是数值运算
当加号两边有一方为字符串的时候做的是拼接运算
public class adddign { public static void main(String[] args) { System.out.println(100+98); //198 System.out.println("100"+99); //10099 System.out.println("100"+"10"); //10010 } }
7.数据类型
一、基本数据类型
数值型
1.整数型 byte,short,int,long
类型 字节 byte 1字节 short 2字节 int 4字节 long 8字节 public class intdetil{ public static void main(String[] args){ int n1 = 1; //int n2 = 1l; 如果将后面加上L就是把long字节给int会溢出 } }
2.浮点型 float 4 double 8
1.浮点数=符号位+指数位+尾数位(尾数部分可能丢失,造成精度损失)
2.默认为double,声明成float时需要在后面加上f或者F
3.浮点型常量有两种表示方法
①十进制数形式
②科学计数法 5.12e2 [5.12*10的2次方]
4.通常情况下应该使用double,因为他比float更精确
5.浮点数使用陷阱
在判断的时候可以以两个数的差值进行判断
double num11 = 2.7; double num12 = 8.1/3; if(num11 == num12){ System.out.println("相等"); } if(Math.abs(num11 - num12) < 0.00000000001){ System.out.println("减法成立"); } //结果输出 减法成立
3.字符型 char 2 存放单个字节
4.布尔型boolean 1 存放 true ,false
二、引用数据类型
1.类
2.接口
3.数组
8.标识符
就是给类,方法,变量起名字
1.标识符命名规则-----硬性要求
- 数字,字母,下划线(_)和美元符($)组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
bj b2 _2b ak47 Class helloworld 2b(X) class(x) #itheima(x)
2.软性建议
标识符是一个单词全部小写
小驼峰命名法:变量
标识符有多个单词的时候,第一个单词首字母小写,其他 单词首字母大写
大驼峰命名法:适合类
一个单词的时候首字母大写,多个单词的时候每个单词首 字母大写
3.见名知意
9.键盘录入
Scanner 类
1.导包 2.创建对象 3.接收数据
//导包 import java.util.Scanner; public class ScannerDemo1 { public static void main(String[] args) { //创建对象 Scanner sc = new Scanner(System.in); //接收数据 int i = sc.nextInt(); System.out.println(i); } } //输出结果 /* 输入1 输出1 */
10.运算符
对字面或者变量进行操作的符号
1.算术运算符
+ - * / %
public class operatordemo01 { public static void main(String[] args) { //+ System.out.println(2 + 2);//4 //- System.out.println(1.1 - 1.01);//0.09000000000000008 System.out.println(3 - 2);//1 //* System.out.println(2 * 3);//6 // '/' System.out.println(10 * 2);//5 System.out.println(10 * 3);//3 System.out.println(10.0* 3);//3.33333333 //% System.out.println(10 % 2);//0 System.out.println(10 * 3);//1 } }
‘+’ 的使用
数字相加
隐式转换(自动类型提升)
把取值范围小的数值转换成取值范围大的
byte short char 三种类型的数据在运算的时候都会先提升为int
byte<short<int<long<float<double
强制转换
目标数据类型 变量名 = (目标数据类型 ) 被强转的数据
double a = 12.3; int i = (int) k
字符串相加
1、如果“+”操作中出现字符串时,这个“+”是字符串的连接符,而不是运算符。会将前后的数据进行拼接
2、连续加的时候,从左到右依次进行
1+99+“年黑马” // 100年黑马
System.out.println(3.7+"abc") //3.7abc System.out.println("abc"+true) //abctrue System.out.println('中'+"abc"+true) //中abctrue System.out.println(3.7+"abc") //3.7abc int age = 18; System.out.println("我的年龄是"+age+"岁");//我的年龄是18岁 System.out.println("我的年龄是"+"age"+"岁");//我的年龄是age岁 System.out.println(1+2+"abc"+2+1); //3abc21
字符相加
当出现 " 字符加字符/字符加数字" 的时候,会把字符转换成ASCII表中的数字,然后数字进行相加
2.自增自减运算符
++ 变量的值加1
int a = 10; int b = a++; //先用后加 10 int a = 10; int b = ++a;//先加后用 11
–变量的值减1
i–
–i
3.赋值运算符
+=(隐含一个强转)
s += 1 s = (强转)(s+1)
-+
*=
/=
%=
4.关系运算符
==
!=
‘>’
‘>=’
‘<’
‘<=’
5.逻辑运算符
& 逻辑且 两边为真结果为真
| 逻辑或 一边真为真结果就是真
^ 逻辑异或 相同false,不同为true //民政局结婚,同性为flase
!逻辑非 取反
6.短路逻辑运算符
|| 短路或 左边能确定结果 就不会执行右边
&& 短路与
7.三元运算符
关系表达式 ? 表达式1 :表达式2
11 源码,反码,补码
12语句
1.顺序
2.分支语句
// if(){ } // if(){ }else{ } // if(){ }else if(){ }else if(){ } //switch switch(){ case 1: sout(); break; case2: break; default: } jdk12以后 switch(){ case 1 -> sout(); case 2->sout(); default }
3.循环语句
for(int i =0;i<=10;i++){ } //while while(){ } //do.....while do{ //循环体语句 }while(条件判断语句);
4.无限循环
for(; 😉{
System.out.println();
}
while(true){
}
do{
}while(true)
5.循环跳转语句
continue 跳出本次循环,继续下次循环
break 退出循环
13.数组
数组指的是一种容器,可以用来存储同种数据类型的多个值
1.数组的定义
int [] array; // int array[];
2.数组的初始化
静态数组
//数组的静态初始化 //数据类型[] 数组名称 = new 数据类型[]{obj1,obj2,.....} //简写 数据类型[] 数据名称 = {object1,obj2,....} //定义一个数组存储五个学生的名字 String [] name = new String[]{"wwl","LIU","SAN"}; String [] name1 = {"wwl"}; //定义一个数组存储3个学生的年龄 int [] age1 = new int[]{1,2,3}; //定义一个数组存储3个学生的身高 double [] height = new double[]{12.2,22.3};
数组遍历
int [] arr = {1,2,3} for(int = 0;i<arr.length;i++) System.out.println(arr[i]);
动态数组
//动态初始化 int [] name = new int[3]; name[0] = 1; name[1] = 1; name[2] = 3; System.out.println(name[0]); System.out.println(name[1]); System.out.println(name[2]); /* 1 1 3 */
//数组默认初始化值的规律
//整数类型:默认初始化值0
//小数类型:默认初始化值0.0
//字符类型:默认初始化值\u00000·空格
//布尔类型:默认初始化值false
//引用数据类型:默认初始化值nulI
动态数组和静态数组的区别
动态初始化:手动指定数组长度,由系统给出默认初始化值。
只明确元素个数,不明确具体数值,推荐使用动态初始化
举例:使用数组容器来存储键盘录入的5个整数。
int[]arr={?????}; int[]arr new int[5];
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
需求中已经明确了要操作的具体数据,直接静态初始化即可。
举例:将全班的学生成绩存入数组中11,22,33
int[] arr={11,22,33};
java内存分配
Java内存分配
栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
堆:存储对象或者数组,new来创建的,都存储在堆内存
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关
寄存器:给CPU使用,和我们开发无关1.当两个数组指向同一个小空间时,其中一个数组对小
空间中的值发生了改变,那么其他数组再次访问的时
候都是修改之后的结果了。
14.方法
方法是程序中最小的执行单元
1.什么是方法?
方法是程序中最小的执行单元。
2.实际开发中,什么时候用到方法?
重复的代码、具有独立功能的代码可以抽取到方法中。
3.实际开发中,方法有什么好处?
可以提高代码的复用性
可以提高代码的可维护性
int [] arry;
int arry [];
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
需求中已经明确了要操作的具体数据,直接静态初始化即可。
举例:将全班的学生成绩存入数组中11,22,33
int[] arr={11,22,33};
Java内存分配
栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
堆:存储对象或者数组,new来创建的,都存储在堆内存
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关
寄存器:给CPU使用,和我们开发无关1.当两个数组指向同一个小空间时,其中一个数组对小
空间中的值发生了改变,那么其他数组再次访问的时
候都是修改之后的结果了。简单方法定义调用
/* //定义 public static void 方法名(){ 方法体 } //调用 方法名(); */ public class MethodDemo1 { public static void main(String[] args) { playGame(); playGame(); } public static void playGame(){ System.out.println("玩游戏"); System.out.println("输了"); System.out.println("生气"); System.out.println("骂人"); System.out.println("------------"); } }
带参数的方法的定义和调用
public class MethodDemo2 { public static void main(String[] args) { add(2,4); } public static void add(int a , int b){ int result = a + b; System.out.println(result); } }
■形参:全称形式参数,是指方法定义中的参数
■实参:全称实际参数,方法调用中的参数方法的重载
一个类中,出现对个方法的名称相同,但是他们的形参列表是不同的,那么这些方法就称为方法重载了
方法重载的注意事项
·一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法重载了,其它的都不管(如:修饰符,返回值类型是否一样都无所谓)。
形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称return
没有返回值的return 结束所在方法的执行