Java 基础
一.Linux 的文件系统:
Linux只有一个根目录 “/”, 全部文件系统都从根目录开始。
每个Linux登录用户都有一个“User Home”目录, 称为 用户主目录
用户在主目录中具有最高的权限,可以进行任意的增删改查
其他的系统目录一般只有只读权限。
利用Linux开发Java程序,只能保存在 用户主目录 里面
二.Java开发工具
JDK:JAVA开发环境
JRE:JAVA运行环境
JVM:JAVA虚拟机
三.JVM运行原理
编译成.class文件后,再运行(一次编译,到处运行).
四.变量
变量声明:变量必须先声明,并且初始化后才能使用.
命名原则:由字母/数字/_/$组成;不能以数字开头;不能使用关键字.
建议:使用驼峰命名法.
五.Java基本类型
整数4种:byte/short/int/long
浮点数2种:float/double
字符类型1种:char
布尔类型1种:boolean
整数的除法是整除----得到的值是整数
byte的范围是:-128~127 8位二进制
int的范围是:约正负21亿 32位二进制
注意范围,避免溢出.
六.运算
取余运算%: 用于周期性计算
自增/自减(++/--):
i++,加号在后,整体值是原先i的值,然后i增加1,称为:先用后加
++i,加号在前,整体值是增加以后i的值,先i增加1,称为:先加后用
七.从控制台读取数据
1.创建对象 console:控制台
Scanner console=new Scanner(System.in);
2.调用 Scanner 类型提供的API方法从控制台获取数据。
double d=console.nextDouble();
八.逻辑运算
运算符: &&(与,并且) ||(或,或者) !(非)
注意短路逻辑判断现象:
Java 中&& 和 || 运算是短路的运行,
在第一个表达式能够确定整体结果情况下,不在计算第二个表达式。
九.赋值运算
赋值运算的优先级最低,在最后执行.
十.字符串连接运算
"+"有两种功能,称为 运算符重载.
1.运算符 +
2.运算规则区别:
当 + 的两端都是数值,执行数值加法计算
当 + 的一端出现字符串时候,执行字符串连接
3.连接时候数据转换规则:
数值转换为10进制连接
char类型按照字符进行连接
boolean 按照 true 、false连接
4.数值加法和连接运算优先级一样,按照从左到右顺序结合计算。
1 + 5 + 4 + "A" + 4 + 5 + 1 // 10A541
1 + 5 + 4 + "A" + (4 + 5 + 1) //10A10
'A'+1+"A" 比较 "A"+1+'A'
66A A1A
十一.元运算(条件运算)
Boolean表达式 ? 表达式1(true时执行) : 表达式2(false时执行)
十二.分支流程控制语句
1.if else语句:
if(){
}else if(){
}else{
}
2.switch case语句:
switch(整数分支条件){
case 常量1:
语句块1;break;
case 常量2:
语句块2;break;
default:
语句块3;
}
switch case 与 if...else if...else 的区别:
1.switch case 只能根据整数类型进行多路分支
其条件一定是int(byte short char)
2.switch性能优秀,远远好于if语句。
3.if语句可以处理任意的分支条件,可以处理整数分支条件
4.选择建议
如果分支条件是整数尽量使用switch case
其他情况采用if
十三.循环结构
1.循环体: 循环反复处理的业务过程
2.循环条件:循环体继续执行循环的条件
3.如何使用循环:
1)理清业务过程!!!
2)分析业务处理步骤。
3)分析处理步骤中出现的循环过程
找出循环体!!!
找出循环条件
4)套用循环语句!
4.break 语句
break 语句可以跳出当前正在执行的循环.
5.do while 与 while 语句的区别:
1)循环体和循环条件的执行顺序不同
while 先执行循环条件再执行循环体
do while 先执行循环体再执行循环条件
do while 的循环体至少被执行了一次
2)如何业务分析结果找到循环体和循环条件
如果循环条件在循环体之前,使用 while
如果循环条件在循环体之后,使用 do while
如果循环条件在循环体的中部,使用 死循环+break
6.for 循环
for(初始表达式;结束条件;递增表达式){
循环体;
}
7.死循环
for(;;){
}
等价于
while(true){
}
8.break 打断循环
break可用于循环语句或switch语句中;
break用于循环,可使程序终止循环而执行循环后面的语句,常常与条件语句一起使用。
9.continue 继续循环
continue只能用于循环中:
其作用为跳过循环体中剩余语句而执行下一次循环
十四.数组
1.使用长度创建数组
int[] ary = new int[长度];
1)使用长度创建数组时候,每个元素有默认值.
2)数组元素的默认值
int byte long short : 0
double float : 0.0
boolean : false
char : 编码为0的字符
引用类型包括String: null
2.使用元素初始化数组
如果事先已知数组的元素, 可以使用元素直接初始化数组.
int[] ary = new int[]{3,1,4,5,6};
boolean[] test=new boolean[]{true, false, true};
String[] names = new String[]{"Tom", "Jerry", "John"};
注意: 不能写数组长度, 元素个数就是数组长度.
3.两种创建数组的区别
1)如果数组元素不多, 已经知道每个元素的值, 就使用元素直接初始化数组.
2)如果元素过多, 使用长度创建数组.
3)如果元素没有初始值, 使用长度初始化.
4.范围数组的元素
1)使用[下标序号] 访问数组元素
2).length 属性, 可以获得当前数组的长度, 长度就是元素的个数.
3)数组的下标范围: 0 1 2 ... length-1
第一个元素下标: 0
最后元素的下标: length-1
4)如果超范围访问, 出现运行异常: 数组下标越界
5)小于0 或者 大于等于length 都是超范围
注意: 数组中没有元素: ary[length]
5.复制数组
1)使用System.arraycopy( )方法可以实现数组的复制
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src – 源数组
srcPos – 源数组中的起始位置
dest – 目标数组
destPos – 目标数组中的起始位置
length – 要复制的数组元素的数量
2)Array.copyOf() 方法
使用java.util.Arrays类的copyOf方法可实现数组的复制
类型[ ] newArray = Arrays.copyOf ( 类型[ ] original , int newLength );
newLength小于源数组,则进行截取
newLength大于源数组,则用0或 null进行填充
特点:生成的新数组是原始数组的副本
6.数组扩容
数组的长度在创建后是不可改变的,
所谓扩容是指创建一个更大的新数组并将原有数组的内容复制到其中。
可以通过Arrays.copyOf()方法,简便实现数组的扩展。
7.冒泡排序:
冒泡排序的原则:比较相邻的元素,如果违反最后的顺序准则,则交换
可以简化理解为:
第一次找到所有元素中最大的放在最后一个位置上,不再变动;
第二次找到剩余所有元素中最大的放在倒数第二个位置上,不再变动;
以此类推,直到排序完成。
8.排序 Arrays.sort()
JDK提供的Arrays.sort(ary)方法封装了数组的排序算法.
十五.方法
1.方法概念
1)各种语言都有方法的概念(有的语言称其为函数或过程)
2)方法用于封装一段特定的逻辑功能
如:执行计算或操作;
3)方法可以在程序中反复被调用;
4)方法可减少代码重复,便于程序的维护。
提示: 方法是 懒人 发明的, 用于重复使用算法代码(重用).
2.方法的要素
修饰词 返回值类型 方法名(参数列表){
方法体
}
1)修饰词: 用于声明方法的可用范围.
在面向对象阶段详细讲解.
2)返回值: 用于声明方法的处理结果的数据类型.
Java方法必须声明返回值
如果是没有返回值的方法, 使用void声明无返回值的方法
如果方法有返回值, 就必须在方法中使用return返回与类型兼容的返回值数据.
3)方法名: 方法的名称, 方法的识别名称, 要遵守Java命名规范. 做到见名知意
4)参数列表: 用于声明方法中需要处理的数据,是方法执行的前提条件.
Java支持多个参数.
是方法中需要处理的数据
5)方法体: 是方法的处理过程, 方法的计算过程,也就是方法的算法部分.
注意: Java的方法只能声明在类的内部.
3.局部变量
方法中声明的变量是局部变量, 运行期间局部变量在栈内存中分配.
方法的参数也是局部变量,也在栈中分配.
从Java基础 day09