学习笔记
JAVA平台
java软件由jdk,jre,jvm组成;
java程序的运行,是在jvm虚拟机上运行,有jvm的支持,才能做到一次编译,多平台运行;
jre包含jvm和运行时的核心类库;
jdk包含了jre和java的开发工具。
JAVA环境变量的配置
为了方便java文件的使用,能在任何文件夹中使用java文件,需要在此计算机/此电脑/属性/高级系统设置/环境变量/系统变量里添加java\jdk的目录,并命名为%JAVA_HOME%,再在path里添加%JAVA_HOME%\bin的目录,以此在以后jdk更新也不用频繁变动环境变量。
常量
概念:常量即是在JAVA程序执行过程中不会发生改变的量。
常量的命名规则:常量单个单词全大写, 多个单词所有单词大写,单词与单词之间由下划线(_)连接;
分为字面值常量和自定义常量;
字面值常量由字符和空常量(null)组成;
1.字符串常量:使用双引号包起来的内容即称为字符串常量;
2.字符常量:使用单引号包起来的单个内容;键盘上的每一个按键都是"字符",当前这些字符单独使用的时候,不会计算,只是一个固定的字符,但是一旦这些参与运算,会计算,每一个字符都对应ASCII码表的值;
3.整数常量:常见自然数整数;
4.小数常量:又名浮点型常量,常用科学表示法进行表示;
5.布尔常量:仅有false和true;
6.空常量:null,空字符串也是字符串常量,空常量仅是null,不占用内存,常用与String类型的特殊引用;
变量
概念:变量即是在java运行过程中,不断发生改变的值;
变量的三要素:
数据类型+变量名称=初始化值
数据类型分为基本数据类型的四类八种和引用类型
基本数据类型的四类八种:
1.整数类型:byte short int long
2.浮点类型:float double
3.字符类型:char
4.布尔类型:boolean(false\true)
引用数据类型:数组,类,接口;
变量名称的命名规则:
变量名称需要符合小驼峰规则,单个单词小写,多个单词首个单词小写,其余单词首字母大写。
初始化值的注意事项:
整数类型默认为Int型,为了区分int和long型,需要在long型后标记L\l
小数类型默认为double区分float和double型,需要在float型后标记F\f
标识符
用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。
-
标识符由字母、数字、下划线“_”、汉字、美元符号“$”组成,第一个字符不能是数字。
-
不能把java关键字和保留字作为标识符。
-
标识符没有长度限制。
-
标识符对大小写敏感
关键字
是语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等;
关键字不能用作变量名、方法名、类名、包名和参数。
关键字在高级记事本或开发软件里由特殊的颜色标识出
计算规则
变量的计算遵循计算机的二进制设计原理;
使用原码,补码,反码进行计算,变量和变量进行计算要保证两者之间的数据类型一致;
字节码位最高位为符号位,0表示整数,1表示负数。
隐式转换和显式转换:
byte short char三个类型之间不能自动转换:
Java中byte、short、char三种类型的优先级是相同的,相同优先级之间是不能进行自动转换的,只能将低类型自动转换为高类型;
byte short char在参与运算时,会自动转换为int类型方便计算,即是隐式转换;
高类型向低类型进行转换时,由于比特位数不同,直接转换时会将高类型的多余的位数直接截取,可能会造成数据损失,计算机一般不允许高类型向低类型直接转换,
在需要将高类型向低类型转换时,可用:低目标类型 变量名 = (高目标类型)变量值 进行强制转换,即是显式转换,强制转换也适用于引用类型。
进制之间的相互转换:
十进制到任意进制:
除余法,除以进制数,直到商为0,将余数倒转排列即是该进制。
任意进制到十进制:
展开相加法:
参考二进制转换为进制的展开法,
A*X^(n-1)各位数加和=十进制,A为该位数所表示的十进制数;
二进制到任意进制:
2进制转换为10进制:
8421码,各位数的加和1*2^(n-1),n为该数位数;
2进制转换为16进制:
可用性质法,转换为8进制时,将2进制3位为一位数,转换为10进制,左边位数不够三位的添0;
转换为16进制时,将2进制4位为一位数,转换为10进制,左边位数不够的添0。
任意进制到二进制:
通过十进制为中间跳板,先转换为10进制,再转换为二进制。
运算符
算术运算符:+,-,*,/,%
比较运算符(关系):<,<=,>=,>,==,!=
比较运算符的结果为布尔类型,false和ture两种情况;
逻辑运算符:逻辑单与&,逻辑单|,逻辑异或^,逻辑非:!
逻辑双与&&,逻辑双或||
双与和双或为常用类型,具有短路的作用,双与当前半为false后面即不会进行计算,双与当前半为ture后面即不会进行计算。
位运算符:位与&,位或|,位异或^,~反码
位与(&)有1则为1,全0才为0;
位或(|)有0则为0,全1才为1;
异或(^)不同为1,相同为0
反码(~)按位取反
三目(三元)运算符: (表达式)? 执行true的结果:执行false的结果
int reuslt = (a>b) ? a: b;
区别于if分支语句,三元更像是一个运算符号,需要有承载结果的变量,而if是一个语法结构。
程序基本结构
基本结构分为三大类:
1.顺序结构
2.选择结构
3.循环结构
顺序结构从上至下,除预算符优先级外从左至右执行代码,
选择结构为存在一个条件,根据是否符合则仅执行其中一个,
循环结构为设立一个条件,若满足该条件则一直重复执行,直到不满足该条件;
if语句
格式
if语句有四种使用形式:
if(条件){…} 简单语句
if(条件){…}else{…} 双分支语句
if(条件){…}else if(条件){…}else{…} 多分支语句
if(条件){ if(条件){...} } else {...} 嵌套语句
switch语句
格式
switch(表达式expr){
case const1:
statement1;
break;
case const2:
statement2;
break;
... ...
case constn:
statementn;
break;
default:
break;
}
表达式exper的值只能是byte short int char enum(枚举) String类型
case后只能跟常量值或者final的变量,不能是一个范围,所有case后的值不能想同,
default可有可无,在语句中的位置也不是固定的,
break对switch 语句必不可少,若是case后不使用break,会造成case穿透的现象,后面的条件判断直接跳过,输出所有结果,也可以用穿透现象实现一些特殊运用。
循环语句
- while 循环
- do/while 循环
- for 循环
while 循环
格式
while(boolean表达式){循环体}
先判断再执行
do/while 循环
格式
do{循环体}while(boolean表达式);
先执行一次循环体,再进行判断。
for 循环
格式
- 普通形式:for(初始值设定(表达式1);循环条件判定表达式(表达式2);变量改变表达式(表达式3)) {循环体}
- 嵌套形式:for(1;2;3){
for(1;2;3){
...}
}
流程控制语句
break:语句用于终止某个语句块的执行
continue:语句用于跳过某个循环语句块的一次执行,继续下一次执行
(break和continue用于循环结构和switch)
return:能用于结束整个方法
System.exit(0):终止jvm的运行
方法
方法是一段用来表示特定功能的代码片段,可以被多次调用。
格式
方法:public(范围修饰) + static(静态修饰)+ 返回值类型/void +
方法名称(参数列表(数据类型)a,(数据类型)b,(数据类型)c){
方法函数+return返回值
}
调用方法: 方法名(参数列表a(实际数值),b(实际数值),c(实际数值));
方法:
- 范围修饰符不可省略,静态修饰符根据情况写出,或者不写(非静态),
- 返回值类型根据运行结果返回的值类型而定,没有返回的值使用void表示;
- 方法名称要符合小驼峰原则,且名字尽量见名知意,单个单词全小写,多单词首个单词小写,其余单词首字母大写;
- 方法外定义的参数为实际参数(实参),方法内为形式参数(形参);
- 方法函数即是得到返回值的过程,最后用return得到返回值,并且结束该方法;
- 在同一个类中方法之间互相平级,可互相调用不可包含。
调用方法:
- 接收方法值的变量类型要和返回值类型相同,否则需要使用强制转换;
- 参数列表数量和数据类型必须完全对应
- 如果一个函数返回值类型为void,则不能再调用函数的同时直接打印
方法的重载
同一个类中,方法名字相同,参数列表不同。则是重载
注意:
- 参数列表的不同包括,参数个数不同,参数数据类型不同,参数顺序不同
- 方法的重载与方法的修饰符和返回值没有任何关系
- 改变返回值:返回值对方法的重载没有任何影响,只改变返回值类型,其他都不改变,则对于编译器而言,则认为是同一个方法
- 只改变访问权限修饰符,其他都不改变,则对于编译器而言,则认为是同一个方法