Java 学习:
初识java
为什么想学习java?
2019年大学毕业以后进入中交二航局,原本以为自己天不怕地不怕,终究还是被生活无情的给了一个巴掌。半个月以后决定辞职,转行IT行业。看过n多视频推荐以后从众多编程语言中选择学习java。
经过一些了解和初中同学有了一次沟通以后,报名一家培训机构。2019.8.2来到了培训结构,正式开始我的java的学习路程。
第一周学习笔记及小结:
1).什么是java?
Java是一门高级的计算机编程语言
1.1什么是计算机语言能够操作或控制计算机的语言叫做计算机语言
1.2高级语言早期的计算机语言只能通过0和1来和计算机沟通,称之为低级计算机语言,高级语言是通过英文字符和一些符号就可以与计算机进行沟通
1.3编程就是编写程序
2).HellowWorld第一个程序:
public class HellowWorld{
//main方法是java程序代码的运行入口
public static void main(String[]args){
//输出字符串“HellowWorld”system.out.println(“Hellow World”);
}
}
3).配置环境变量
3.1环境变量就是当前操作系统支持的命令集
3.2因为我们需要在当前的操作系统中运行java程序,所以我们需要配置环境变量
3.3配置环境变量的步骤
1.计算机图标单机右键:属性->高级系统设置->环境变量
2.在弹出的环境变量中的下方的系统变量中
确定jdk的安装路径
新建变量名为:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_161
定位java文件生成class文件的位置
新建变量名:CLASSPATH
变量值:.
将java命令添加到windows系统的命令集中
编辑变量名:Path
变量值(在已有内容的最左侧):C:\Program Files\Java\jdk1.8.0_161\bin;
3.4验证环境变量
win+R运行cmd
输入:java-version回车查看效果
4)java家族的结构
4.1 JVM虚拟机
用于运行class文件,运行java程序
4.2 JRE java运行环境
JVM+java的系统类库
JRE是java程序运行的最小单元
4.3 JDK:java开发工具包
JRE+java开发命令
JDK是开发java 的最小单元
java程序运行分为三步走:编写(程序员编写代码生成.java文件)->编译(jdk中的编译器编译生成.class文件)->运行(JVM虚拟机运行.class文件,展示最终效果)
5)注释:指java中的某些内容不会被编译
5.1单行注释:// ……
5.2多行注释:/* …………*/
5.3文档注释:暂时未讲(第二阶段进行学习)
6)注释可以暂时规避不想运行的代码或者是注释掉对已编写的代码进行的解释文字快捷缩进:Ctrl+A 全选 Ctrl+I 代码块进行正确缩进
7)变量
7.1变量就是变化的数值,Java中的变量就是变化数值的载体
7.2变量的声明,要想使用一个变量,首先需要声明一个变量。变量有两个要素:类型和名称(如 我要声明一个整数类型的变量x:int x;)
7.3变量的初始化,变量在进行使用之前必须对变量进行初始化(第一次对变量进行赋值就叫做变量的初始化,如: int x=0;)
7.4变量的使用,将变量中保存的”值”取出来进行使用比如:进行输出System.out.println(x); 或者参与计算 int a=10;int b=20;int m=a+b;
7.5变量使用时的注意事项:1.对于已经声明的变量不能再次声明;2.为变量进行赋值时必须和类型相匹配;3.变量必须在 声明->初始化 以后才能使用
7.6变量的命名
1.命名规则:可以是 数字、字母、_、$做为变量名的组成
2.可以由多个字符组成,数量不限
3.不能以数字开头命名
4.不能包含空格
5.变量名区分大小写
6.关键字不能作为变量名
7.尽量使用英文命名
8.使用驼峰命名法(第一个单词的首字母小写,第二个及以后的单词首字母大写)
8)java中的数据类型:基本数据类型和引用数据类型
8.1基本数据类型(8种)
4个整数基本数据类型;2个小数基本数据类型;两个非数基本数据库类型
整数基本数据类型:
1.byte(1字节 -128~127)非常小的一个整数类型,不经常使用通常在IO中才使用(二阶段学习)
2.short(2字节 -32768~32767)较小的一个整数类型,不经常使用
3.int(4字节 -21亿~21亿)最常用的整数类型,计算结果如果超过范围会出现溢出现象
4.long(8字节 范围很大)较常用的整数类型,int类型无法保存的较大数据才使用,如果计算结果超过了int类型的范围,需要在数值后面加长l或L,用long类型接受System.currentTimeMillis();(未学习)
时间偏移量:1970-7-1 00:00:00 到至今所经过的毫秒数(不知道有啥用。。。)
小数基本数据类型:
1.float(4字节 浮点数据类型 单精度)float可以接收小数类型的数据,但是直接给float类型赋值时需要在直接量后加f或F,float不经常使用
2.double(8字节 双浮点数据类型 双精度)double是会常用的小数类型基本数据,所有浮点类型运算过程中,计算结果都有可能产生舍入误差
非数基本数据类型
1.char(2字节 字符类型 0~65535)char能储存单个任意字符,使用时需要用’’将储存的字符引起来,计算机内部,一个字符实际上就是一个数字的转换:a——97 A——65 0——48
2.blooean(布尔类型 1字节 表示true或false的数据类型只有true和false两种取值)
8.2数据类型的转换
1.java数据类型转换的原因java中只允许相同数据类型的数据进行计算,而计算结果还是这个数据类型
2.自动类型转换(隐式类型转换)当两个不同数据类型进行计算时,较小的数据类型会自动转换成较大的数据类型,得到的结果是较大的数据类型
3.强制类型转换(显式类型转换)当两个不同数据类型进行计算时,如果我们想得到较小类型的数据,就可以使用强制类型转换来实现将一个类型的数据转换成另一个类型如:double i=12.9;//将double类型转换成int类型int a=(int)i;
4.java中的直接量
直接量:直接编写在代码中的数字
java中直接编写的整数类型是int
java中直接编写的小数类型是double
9)用户输入
在类名上面输入:import java.util.Scanner;
在main方法的第一行输入Scanner scan=new Scanner(System.in);
使用scan为实现用户输入为变量赋值如 int a=scan.nextInt();
10)运算符和表达式
10.1表达式
数值和运算符的组合,就是数学当中的算式,只要有计算就有表达式
10.2算数运算符
+ - * / %(取余/求模)
计算规则和数学计算规则相同
10.3关系运算符
> < == <= >= !=
10.4逻辑运算符
&& || !(非)
10.5赋值运算符
=
将=右边的值赋给=左边的值
复合赋值运算符
+= -= *= /= %=
x+=5;//在当前值x的基础上加5再赋值给x,等价于x=x+5,但是内部相当于包含了一个隐式的强制类型转换x=(int)(x+5);
10.6字符串连接符
+
将字符串与变量或者数值连接起来
10.7自增自减运算符
++ --
一个变量自增或者自减的运算符连接当前变量自增1或者自减1
10.8条件运算符(三目运算符)
?:
<判断条件>?<条件为true时输出的结果>:<条件为false时输出的结果>
11)java中的程序结构
11.1顺序结构
编写的代码按顺序进行,所有的代码只执行一次
11.2分支结构(编写的代码可能执行一次)
1.单分支结构
if语句:if(<条件>){
//当条件为true时运行的代码段
}
//if结束以后无论真假都会运行的代码段
2.双分支结构
if-else语句:if(<条件>){
//条件为true时运行的语句
}else{
//条件为false时运行的语句
}
//无论条件真假都要运行的语句
3.多分支结构
3.1)if-else-if(多重if结构)
if(条件1){
//条件1为true时运行的语句
}else if(条件2){
//条件2为true时运行的语句
}else if(条件3){
//条件3为true时运行的语句
}else{
//条件1、2、3均为false时运行的语句
}
注意事项:else if的数量不限、else可以省略、多重if结构只能运行其中一个代码、判断条件顺序有要求3.2)switch结构
switch(<整数表达式>){
case 1:
//当整数表达式值为常量1时运行
break;
case 2:
//当整数表达式值为常量2时运行
break;
case 3:
//当整数表达式值为常量3时运行
break;
……
default;
}
注意事项:整数表达式是最终结果是整数的算式,通常情况下可能为变量;整数表达式只可能是byte、short、int、char、String(jdk1.7以后支持String)
break关键字:终止switch代码的运行,继续switch结构以后的内容,如 果不编写break关键字,switch会出现case穿透现象
3.3)多重if和switch结构的优缺点
多重if:特别适合于判断一个值在一个范围的情况
switch结构:使用灵活,结构简单,运行效率高,特别适合于等值判断时
11.3循环结构(编写的代码可能执行多次)
循环的要素:循环变量、循环的条件、变量更新、循环的操作;利用循环结构可以有效的减少代码冗余,提高程序的可维护性
1.while循环
while(<判断条件>){
//判断条件为true时运行的代码段
}
2.do-while循环
do{
//条件为true时运行的代码
}whiel(<判断条件>);
区别:while结构是先判断后执行,而do-while是先执行一次再判断(至少执行一次)
3.for循环
for(表达式1;表达式2;表达式3){ //表达式1表示循环变量的定义和赋值,表达式
//循环操作 2是循环条件的判断,表达式3是循环变
量的更新
}
4.小结
再已知循环次数的情况下首选for循环,次数不确定的根据实际情况选择while或者do-while循环
break关键词:循环语句也可以使用break用于终止循环结构
continue关键词:只能用于循环结构中,跳过本次循环没有运行的内容,进入下一次循环
5.循环嵌套
循环结构中包含另一个循环结构;嵌套可以嵌套任意层次;while\do-while\for可以互相嵌套;内层循环如果出现break或者continue,只作用于内层循环;外层循环循环一次,内层循环循环一遍。
12)数组
保存多个相同数据类型的集合(使用数组可以减少代码冗余)
组成:数组名、数组长度、数组元素、数组下标
特征:数组长度是固定的;数组下标从0开始;数组有默认值(int double boolean String对应的默认值分别是0 0.0 false null);数组元素类型必须相同
数组的声明:int[]<数组名>
数组的初始化(第一次赋值):arr=new int[<数组长度>] 数组长度:<数组名>.length合二为一:int[] arr=new int[arr.length]
数组元素的赋值:<数组名>[<下标>] 如:arr[0]=3;
初始化的同时对数组赋值:int[]arr={3,2,6,5};
数组声明与赋值分开:int[]arr;
arr=new int[]{3,2,6,5,};
数组名不能直接输出:如果需要对数组名进行输出的话需要进行数组遍历(使用for循环进行数组遍历)
12.1数组操作
求最值:从数组中找出最大值(先将第一个定义为最大值,通过for循环结构与if结构将最大值输出)
12.2数组是引用数据类型
当两个数组名引用同一个数组时,改变其中一个数组的数组元素会对另一个数组产生影响,因为两个数组的引用相同要想修改一种一个数组而不影响另一个数组,需要进行数组复制
12.3数组复制
针对目标数组复制源数组的数据内容的操作,而且两个数据引用不同
1)可以自己编写代码进行(不推荐 以后学习会讲到)
2)System.arraycopy(1,2,3,4,5,);
1:源数组
2:源数组的复制起始位置
3:新数组
4:新数组的起始位置
5:需要复制的数组元素的个数
3)Arrays.copyOf(1,2);(特别适合扩容或者缩容的数组)
1:源数组
2:复制的数组元素的个数
12.4数组的排序
使用Arrays.sort();
将数组元素由小到大或者由大到小进行排列
13)java中的方法
java中处理一个业务的代码块就叫做方法,将处理不同代码的代码块从程序入口分离出来,来降低代码的复杂度;每个方法可以互相独立不干扰;方法编写一次以后可以多次调用
13.1方法的定义
1.无参数无返回值的方法
public static void <方法名>(){
//方法体
}
2.无参数有返回值的方法
public static int<方法名>(){
//方法体
return<返回结果>;
}
return的作用:1.返回方法的结果 2.运行到return时可以直接终止当前的方法
3.有参数无返回值的方法
public static void<方法名>(参数列表){
//方法体
}
<参数列表>:<参数类型1 参数,参数类型2 参数……>方法定义时将声明的参数统称为形参(形式参数)
4.有参数有返回值的方法
public static <返回值类型><方法名>(参数列表){
//方法体
return<返回的结果>;
}
13.2方法的调用
1.无参无返回
<方法名>();
2无参有返回
变量=<方法名>();
3.有参无返回
<方法名>(参数列表); 调用时,参数列表称之为实参(实际参数)
4.有参有返回
变量=<方法名>(参数列表);