Java基础:
声明:
1)仅作为个人学习,如有冒犯,告知速删!
2)不想误导,如有错误,不吝指教!
基础概念:
-
注释
-
“//” 这是单行注释文字
-
/* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意:多行注释不能嵌套使用。
-
-
关键字
- 特点:关键字的字母全部小写。
-
常量
-
- 整数常量 整数,例如:-10、0、88等 小数常量 小数,例如:-5.5、1.0、88.88等 字符常量 用单引号括起来的一个字符,例如:'a'、'5'、'B'、'中'等 布尔常量 布尔值,表示真假,只有两个值true和false 空常量 一个特殊的值,空值,值为null
-
除空常量外,其他常量均可使用输出语句直接输出。
-
数据类型:
-
计算机存储单元
请查看计算机基础
-
java中的数据类型
-
数据类型 关键字 内存占用 取值范围 整数类型 byte 1 -128~127 short 2 -32768~32767 int(默认) 4 -2的31次方到2的31次方-1 long 8 -2的63次方到2的63次方-1 浮点类型 float 4 负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38 double(默认) 8 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308 字符类型 char 2 0-65535 布尔类型 boolean 1 true,false 说明:
e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
在java中整数默认是int类型,浮点数默认是double类型。
变量:
-
变量的定义
在程序运行过程中,其值可以发生改变的量。从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。
-
定义格式:
-
数据类型 变量名 = 初始化值; // 声明变量并赋值 int age = 18; System.out.println(age); --------------------- // 先声明,后赋值(使用前赋值即可) 数据类型 变量名; 变量名 = 初始化值; double money; money = 55.5; System.out.println(money);
-
-
-
变量的注意事项:
- 在同一对花括号中,变量名不能重复。
- 变量在使用之前,必须初始化(赋值)。
- 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
- 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
标识符:
标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名。
Java中标识符的组成规则:
-
由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。
- 不能使用java中的关键字作为标识符。
-
标识符对大小写敏感(区分大小写)。
Java中标识符的命名约定:
-
小驼峰式命名:变量名、方法名
- 首字母小写,从第二个单词开始每个单词的首字母大写。
-
大驼峰式命名:类名
- 每个单词的首字母都大写。
-
另外,标识符的命名最好可以做到见名知意
- 例如:username、studentNumber等。
类型转换:
- 自动类型转换
- 强制类型转换
运算符:
-
算数运算符
-
运算符和表达式
-
算术运算符
-
字符的+操作
-
字符串的+操作
-
-
赋值运算符
-
自增自减运算符
注意事项:
-
++和-- 既可以放在变量的后边,也可以放在变量的前边。
-
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
-
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
-
参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。
-
-
关系运算符
- 自行百度
-
逻辑运算符
-
基础逻辑运算符
-
符号 作用 说明 & 逻辑与 a&b,a和b都是true,结果为true,否则为false | 逻辑或 a|b,a和b都是false,结果为false,否则为true ^ 逻辑异或 a^b,a和b结果不同为true,相同为false ! 逻辑非 !a,结果和a的结果正好相反
-
-
短路逻辑运算符
-
-
三元运算符:
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day2/demo/Relationship.java
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day2/demo/countSum.java
数据输入:
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day2/demo/inputDate.java
流程控制语句:
- 流程控制语句分类
- 顺序结构
- 分支结构if语句
- if语句格式1
- if语句格式2
- if语句格式3
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day2/demo/Process_control.java
switch语句:
- switch语句结构
- 练习
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day3/switchCycle.java
for循环:
- for循环结构
- for循环练习
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day3/forCycle.java
while循环:
- while结构
- while循环练习
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day3/whileCycle.java
循环细节:
- do-while循环结构
- 三种循环的区别
- 三种循环的区别
- for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
- do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
- for循环和while的区别
- 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
- 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
- 死循环(无限循环)的三种格式
- for(;;){}
- while(true){}
- do {} while(true);
- 三种循环的区别
- 跳转控制语句
- 循环嵌套
Random:
- Random产生随机数
- Random练习
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day3/random.java
数组:
-
数组的定义以及格式
- 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致
- 格式:数据类型[] 数组名;数据类型 数组名[]
-
数组动态初始化,静态初始化
-
动态初始化:就是只给定数组的长度,由系统给出默认初始化的值
-
格式:数据类型[] 数组名 = new 数据类型[数组长度]
-
int[] arr = new int[3]; arr[0] = 赋值0 arr[1] = 赋值1 arr[2] = 赋值2
-
解释:等号左边:int:数组的数据类型;[]:代表这是一个数组;arr:代表数组的名称
等号右边:new:为数组开辟内存空间;int:数组的数据类型;[]:代表这是一个数组;3:代表数组的长度
-
静态初始化:
- 完整版:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
- 简化版:数据类型[] 数组名 = {元素1,元素2,...};
-
-
数组元素访问
- 索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
- 格式:数组名[索引];
-
内存分配 ----具体详看链接内容
-
单数组、多数组内存图以及多数组指向相同内存图 ----具体详看链接内容
-
数组操作的小问题
- 索引越界异常
- 空指针异常
-
数组遍历、最值
- 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
- 最大值获取:从数组的所有元素中找出最大值
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day4/array.java
方法:
-
方法概述、定义以及调用
- 概述:方法是将具有独立功能的代码块组织成一个整体,使其具有特殊功能的代码集
- 注意:
- 方法必须先创建才能使用---定义方法
- 方法创建后并不是直接可以运行,需要手动使用后,才执行---方法的调用
- 注意:
- 概述:方法是将具有独立功能的代码块组织成一个整体,使其具有特殊功能的代码集
-
无参数方法的定义和调用
-
定义格式:
-
public static void 方法名(){ //方法体 } //范例 public static void method(){ //方法体 } //调用格式 方法名()----method() //方法的调用需要在main下使用
-
总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。
-
-
-
带参数方法的定义和调用
-
定义格式:
-
参数:有数据类型和变量名-数据类型 变量名
-
public static void 方法名 (参数1) { 方法体; } public static void 方法名 (参数1, 参数2, 参数3...) { 方法体; }
-
-
注意:方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错,方法定义时,多个参数之间使用逗号( ,)分隔 ;
-
方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错;
-
形参和实参
- 形参:方法中定义的参数
- 实参:方法调用中的参数
-
-
带返回值方法的定义和调用
-
定义格式:
-
public static 数据类型 方法名 ( 参数 ) { return 数据 ; } //范例: public static boolean isEvenNumber( int number ) { return true ; } public static int getMax( int a, int b ) { return 100 ; }
-
-
方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错
-
调用格式:
-
数据类型 变量名 = 方法名 ( 参数 ) ;
-
isEvenNumber ( 5 ) ; //没有意义 boolean flag = isEvenNumber ( 5 ); //有意义
-
方法的返回值通常会使用变量接收,否则该返回值将无意义
-
-
-
方法的注意事项
-
不能嵌套定义
-
public class MethodDemo { public static void main(String[] args) { } public static void methodOne() { public static void methodTwo() { // 这里会引发编译错误!!! } } }
-
-
void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
-
public class MethodDemo { public static void main(String[] args) { } public static void methodTwo() { //return 100; 编译错误,因为没有具体返回值类型 return; //System.out.println(100); return语句后面不能跟数据或代码 } }
-
-
-
通用格式
-
格式:
public static 返回值类型 方法名(参数) { 方法体; return 数据 ; }
-
解释:
-
public static 修饰符,目前先记住这个格式
返回值类型 方法操作完毕之后返回的数据的数据类型
如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return
方法名 调用方法时候使用的标识
参数 由数据类型和变量名组成,多个参数之间用逗号隔开
方法体 完成功能的代码块
return 如果方法操作完毕,有数据返回,用于把数据返回给调用者
-
-
定义方法时,要做到两个明确
- 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
- 明确参数:主要是明确参数的类型和数量
-
调用方法时的注意:
- void类型的方法,直接调用即可
- 非void类型的方法,推荐用变量接收调用
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day5/methodview.java
-
-
方法重载
-
概念:方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
-
多个方法在同一个类中
-
多个方法具有相同的方法名
-
多个方法的参数不相同,类型不同或者数量不同
-
-
注意:
-
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
-
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
-
-
-
方法的参数传递(具体的详看代码链接)
- 基本数据类型的参数,形式参数的改变,不影响实际参数
- 对于引用类型的参数,形式参数的改变,影响实际参数的值
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day5/MethodOverloading.java
-
练习:
-
数组遍历:
-
需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
思路:
-
因为要求结果在一行上输出,所以这里需要在学习一个新的输出语句System.out.print(“内容”);
System.out.println(“内容”); 输出内容并换行
System.out.print(“内容”); 输出内容不换行
System.out.println(); 起到换行的作用
-
定义一个数组,用静态初始化完成数组元素初始化
-
定义一个方法,用数组遍历通用格式对数组进行遍历
-
用新的输出语句修改遍历操作
-
调用遍历方法
-
-
-
数组最大值:
-
需求:设计一个方法用于获取数组中元素的最大值
思路:
-
定义一个数组,用静态初始化完成数组元素初始化
-
定义一个方法,用来获取数组中的最大值,最值的认知和讲解我们在数组中已经讲解过了
-
调用获取最大值方法,用变量接收返回结果
-
把结果输出在控制台
-
-
代码链接:https://github.com/xbhog/JavaBasis/blob/master/JavaStudy/src/day5/ArrTraveMax.java
-
完整项目代码:
Github:https://github.com/xbhog/JavaBasis
致谢:如果对您有帮助,希望随手一个star,感谢!!