1.java跨平台运行的原理
在需要运行在java的操作系统上,先安装一个JVM(Java Virtual Machine)即可
由JVM负责java程序的运行,实现跨平台,使其具有良好的可移植性
2.怎么实现让常用的java,javac在任何路径下都可以被执行
设置环境变量
- 下载JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html.
- 一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错)
- 安装完JDK后配置环境变量 计算机(右键)→属性→高级系统设置→高级→环境变量。
系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录
系统变量→寻找 Path 变量→编辑在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意如果是win7系统,则原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码;如果是win10系统,那么直接新建就可以)
系统变量→新建 CLASSPATH 变量,变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)
注:设置path环境时:%JAVA_HOME%\bin(%%取路径)
新建:JAVA_HOME (java的bin目录;是我为了java相关的软件使用java,java的服务器软件)
3.JDK包括了JRE,JRE(java运行环境)包括JVM
4.JVM只识别字节码,不能直接识别java源代码 先编译后执行.class文件
.class(字节码文件)
5.如果类名有Public,则文件名必须与类名相同
如果没有public,则文件名和类名可以不一样
6.标识符:程序中凡是自己起的名字
规则:1.由英文字母,数字,下划线,$组成
2.不能以数字开头,不能和关键字同名
3.严格区分大小写
7.常量类型及举例
888//整数常量
88.88//小数常量
”hello world”//字符串常量
’K’//字符常量
true,false//布尔值
null//引用类型的常量
8.java的进制
十进制
八进制:二进制每三位转成一位,二进制三位数最大的是111,等于7,是八进制中最大的数
十六进制:二进制每四位转成一位,二进制四位数最大的是1111,等于15,是十六进制中最大的数
位权:从0开始,从低位到高位
9.负数的二进制:其正数的二进制按位取反再加1(注:有符号二进制数最小为10000000,不是11111111,可以根据含义验证其正确性)
10.变量:内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
为什么要定义变量:用来不断的存放同一类型的常量,并加以重复利用
11.java的变量类型
数据类型的作用:
1.决定变量占多大的内存
2.内部存储的数据
数据类型:基本数据类型:数值型(整数类型(byte,short,int,long),浮点类型(float,double))
字符型(char)
布尔型(boolean)
引用数据类型:类(class)
接口(interface)
数组
整型默认:int 浮点型默认:doubles
long型后如果不加L则默认为int型,浮点型如果不加F则默认为double型
一个字节表示的范围(考虑正负):-(2^(8*字节数-1))到2^(8*字节数-1)-1
八大基本数值类型:
整型:
byte:字节型,占一个字节,-128~127
short:短整型,2个字节,-32768~32767
int:整型,4个字节
long:长整型,8个字节
浮点型:
float:单精度浮点型,精确到小数后第7位,4个字节
double:双精度浮点型,精确到小数点后16位,8个字节
布尔类型:
boolean(true,false):一个字节
字符串:char,unicode:2个字节
常用的unicode编码:a:97 A:65 0:48
12.类型转换:
自动类型转换(隐式类型转换)
强制类型转换(显示类型转换)
数据类型级别高低:byte,short,char–>int–>long–>float–>double
13.所有的byte、short、char的值将被提升到int型
byte ss=8;//右边是int,编译没报错,说明内部做了转换,内部砍掉了前3个字节,高级别到低级别,十分少
14.运算符:用以表示数据的运算、赋值和比较
分为:算术运算符,赋值运算符,比较运算符,逻辑运算符,位移运算符
15.”+”除了字符串相加的功能外,还能把非字符串转换成字符串
如:”x”+123==>”x123″
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1
但被模数是负数就另当别论
对于除号”/”,它的整数除和小数除是有区别的:整数之间只保留整数部分而舍弃小数部分
16.”&”和”&&”的区别:单与时,左边的无论真假,右边的都进行运算:
双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不会参与运算
17.”|”和”||”的区别同理:双或时,左边为真右边不运算
18.”^”异或与”|”或的不同之处:当左右都为true时,结果为false
19.if语句的第二种格式的简写格式。格式是固定的,要求记住。
变量=(条件表示式)?表达式1:表达式2;
注:a,每一种格式都是单条语句。
b,第二种格式与简写格式的区别:简写格式运算完要有值出现。好处是 可以写在其他表达式中。
c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;
20.switch特点:
注:a,switch语句选择的类型只有四种:byte,short,int , char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
21.什么是函数?
函数就是程序中一段独立的小程序。
Java中函数的格式:
返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……)
{
执行语句;
return 返回值;
}
22.函数特点
它是程序中一段独立的小程序。
它可以实现独立的功能。
它只有被调用才会执行。
它可以被重复使用。
23.函数的重载
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
存在的原因:
方便于阅读,优化了程序设计。
特点:
与返回值类型无关,只看参数列表。
24.开辟不同内存空间是为了对每一片内存中的数据都有不同的处理方式,提高效率。
栈内存的特点:
存储局部变量,空间不用时自动释放内存。
堆内存的特点:
存储数组和对象,通过new关键字建立的实体都存放在堆内存当中。
实体都有一个内存地址值。
对内存中的变量都有默认初始化值。
垃圾回收机制,Java特有的内存管理机制,在不定时的时间内将垃圾清除释放空间。
25.引用
强引用(StrongReference)
我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。
软引用(SoftReference)
如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
弱引用(WeakReference)
在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。
虚引用(PhantomReference)
如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。