去年一年看了好多计科的基础课程,这次找工作面试时很多面试官都不关注这些,计划今年要扎扎实实自学完所有的SE内容和EE周边的一些东西;于是就有了SE系列;只是一些零星的笔记,并不期望能给别人启迪,只求自己不要学差了,也不要误导别人才是。
已经知道一些SE的基本知识,再看这些东西,肯定关注一些我以前不知道的东西,所以这里粗略做记录。
一、关于JDK安装选项:
Devepment Tools:JDK核心,包括编译Java程序必须的命令工具(已经包含了JRE,JRE安装在JDK安装目录的子目录中);
Source Code:java所有核心类库的源码;
Public JRE:公共JRE,向浏览器或者其他JAVA程序提供运行时环境;
二、JDK安装完成后目录:
bin;存放JDK的各种命令工具;
db:安装JavaDB的路径;
include:一些与特定平台相关的头文件;
lib:JDK工具命令的实际执行程序包存放目录;
javafx-src.zip:JavaFX所有核心类库源代码;
src.zip:Java所有核心类库源代码;
REDEME:readMe;
三、 PATH环境 变量
所谓Path环境变量其实就是一系列路径,按照指定规则存放起来;当用户在CMD中运行命令时,操作系统会在此命令所提供的路径下依次查找该命令,然后运行;如果没有配置此命令,会显示:“XXX不是内部命令或外部命令,也不是可运行的程序或批处理文件”;当然,也可以不配置该变量,在CMD中直接进入要运行的命令的目录,然后运行该命令即可;
四、关于jdk一些常用命令
JDK命令其实调用了lib目录下jar包中的java类——bin下的命令文件只是对lib中的jar进行了调用而已;
下面介绍一些常用的JDK命令:
1.javac -d destdir srcFile
不再赘述,javac命令用于对.java文件进行编译;destdir 参数指定编译后的.class文件的存放目录;srcFile指定要编译的文件的位置:如xxx/xxx/xxx/HelloWorld.java
2.java -classpath dir1;dir2;dir3;...; dirN java类名
java 命令在没有指定 classpath参数的情况下,java命令将按照环境变量所配置的classpath进行java类搜索;如果并没有指定classpath环境变量,则默认在当前路径下搜索java类;如果在运行java命令时临时指定了classpath参数,则jre会在指定的目录下搜索java类;
3.jar命令(留着,后面再加)
4.javadoc -d<directory> -windowtotle<text> -doctitle<html-code> -header<html-code>
javadoc命令用于生成java api文档;-d 指定文档存放目录;-windowntitle 字符串 ,用于指定api文档在浏览器中显示时的标题;-doctitle 指定概述页面标题;
五、java源文件——.class文件命名
1.一个源文件中可以用多个类,但是最多只能包含一个public类;
3.如果该源文件中含有public类,则该源文件的名称必须与该public类的名称一致——————为xxxx.class
六、java源文件中的字符分类:
1.标识符 不解释;
2.关键字 不解释 几个特殊关键字: transient,volatile,native,super,this,strictfp,const,goto
3.分隔符
java中的分隔符有:分号(;),花括号({}),方括号([]) ,圆括号(()),空格,圆点(.),作用不提;
七、java数据类型
基本数据类型:整数类型(byte,short,int ,long),字符类型(char),浮点类型(float,double),布尔类型(boolean);
引用类型:类、接口、数组、null
1.整型:
java中整数值有四种表示方式:二进制(0b开头)、八进制(0开头),十进制,十六进制(0x开头),在内存中以补码形式保存;默认int类型,使用其他类型需要注明;如 Long i = 15L;
2.字符型
java使用16位Unicode字符集作为编码方式,所以一个字符型变量在内存中占用2个字节;
字符型值有三类:‘A’,‘\r’,'\u0000
char类型实际保存Unicode字符集中对字符的编码,所以是整数,可以参与加减乘除运算,也可以比较大小;
在java中,单引号,双引号,反斜线有特殊用途,如果一个字符串中包含了这三种字符,需要使用反斜线进行转义。
3.浮点型:
浮点型的封装类提供了三个特殊的浮点数值:正无穷大(POSITIVE_INFINITY),负无穷大(NAGATIVE_INFINITY),非数(NaN),用于表示溢出和出错;
正数除以0得到正无穷大,负数除以0得到负无穷大;0.0除以0.0或对负数开方得到非数;所有的正无穷大数值相等,所有的负无穷大数值相等,非数与任何数值都不相等(包括它自己)。
此外,只有浮点数除以0才等于正无穷大或者负无穷大;整数除以0抛出异常;
1.7版本引入了在数值中任意使用“_”对数值进行分隔。
八、关于基本数据类型转换
自动类型转换:
char==>int==>long==>float==>double
byte==>short==>int==>long==>float==>double
除以上左边的类型可以自动转换为右边的类型以外,其他的基本类型转换都需要进行强制类型转换;
强制类型转换可能引起数据发生截断;截断分析记住一点:第一,整数在内存中以补码形式存在;第二,截断保留低位,舍弃高位,符号位会被舍弃,需要重新判定;
九、表达式类型的自动提升
1.所有的byte类型、short类型和char类型都将被提升为int类型;
2.整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型;
如下代码将会发生错位:
short x = 1;
x = x =1;//因为x+1 表达式中,1默认为int型,所以表达式右侧计算结果为int型,而x为short类型,将int型值直接赋予short类型变量,不可以。
而如下代码不会发生错误:
short x =1;
x +=1;
此外,如果表达式中出现了字符串和+,则其他数值在遇到字符串之前会进行计算,但是计算结果遇到字符串后,会转换为字符串,其后所有运算都会变为字符串连接运算;如下代码:
print('a'+7+"hello");
print("hello"+'a'+7);//输出结果自己分析;
`十、直接量
java中可以指定直接量的有是三种类型:基本类型,字符串类型和null类型;具体支持如下八种直接量:
4.double类型的直接量:直接给出浮点数(标准形式的小数或者科学计数法形式的小数);
5.boolean类型的直接量:true和false;
6.char类型的直接量:三种形式的直接量:‘a','\r','\u0000';
7.String类型的直接量:“阿百川”
8.null类型的直接量:null;只可以赋予任何引用类型的变量,用于表示未指向任何有效对象;
byte类型和short类型没有直接量;所以给byte类型和short类型变量赋值时,编译器会检查赋值的范围是否在此类型所能表示的范围内,此外这两种类型不支持变量赋值(表达式类型自动提升为int);
十一、关于运算符
· 1.除法(/)需要注意:如果参与运算的两个操作数都是整数,则被除数不可以是0(如果被除数是0,或抛出异常),而且结果会直接截断为整数(不会舍入);如果两个操作数中有一个是浮点数,则允许被除数是0(除数是浮点数)或者0.0,结果是正无穷大或者负无穷大;计算结果是自然除法的结果。
2.求余(%)需要注意:跟除法注意点相似,不同之处在于,当第二个操作数是0或者0.0时,求余结果是NaN(非数);此外,求余运算计算结果不总是整数。
3.++,--,+=,-=系列运算符,不会发生类型自动提升;
4.++,--,+=,-=系列运算符,只用于变量;
5.赋值运算符=可以进行连续赋值;如 int a,b,c; a=b=c=7;
&(按位与),|(按位或),~(按位非),^(按位异或,相同返回0,不相同返回1),<<(左移运算,右边空位补0),>>(右移运算,左边空位补符号),>>>(无符号右移,左边空位补0)
注意点:类型低于int类型的操作数(byte,short,char)进行位操作,先转换为int类型再进行;
对于int类型的操作数,进行移位操作时,等价于向相应方向移动原移动位数对32求余位;同理,对于long类型的操作数,对64求余;
7.比较运算符:
“==” 如果比较数值类型,即使两个操作数类型不同,但是只要数值大小相等,返回为true;除数值类型比较外,其他比较如果两个操作数类型不相同,不可以使用此运算符比较。
“!=” 同理。
十二、关于三种流程控制结构:
1. if ... else if ... else ... 从第一个分支依次从前至后检查,如果某个分支符合条件,则进入此代码块,后面的其他未检查的代码块不再进行检查——最多只运行一个代码块(当有else时一定运行一个代码块内的代码);一般将小范围的条件放在前面进行检测。
2.for循环只有两个分号(;)是必须的,其他的变量任意;注意在if,while,do while ,for中省略{}所引起的‘;’判定代码块问题。
for(;;)
{
System.out.println(1);
}
for(double x = 0;x<10.09;x=x*1.1)
{
System.out.println(1);
}
for(double x=1,y=1;x*y<20;x=x+1,y=y+2)
{
System.out.println(1);
}
3.结束循环可以使用:抛出异常,return ,break,continue,标签;
十三、数组
数组工具类 java.util.Arrays
其他的后续再做记录吧。