- java的第一个版本是哪一年?java之父是谁?
1995年sun公司发布的java第一个版本 ,java之父是gosling - java技术体系是什么样的?
- Java SE标准版:提供完整的java核心API
- Java EE企业版:为开发企业环境下的应用程序提供的一套解决方案。包含的技术有Servlet、Jsp等
- Java ME小型版:支持程序运行在移动终端,现已被Android取代
- java有哪些重要特点?
- 面向对象
- java具有健壮性:强类型机制、异常处理、垃圾的自动收集等是java程序的重要保证
- 跨平台:一个class文件可以在多个平台下运行
- 解释性语言:编译后的文件不能直接在机器上运行,需要解释器来执行
- 什么是JVM、JDK、JRE
JVM:java虚拟机,是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中
JDK:java开发工具包,JDK=JRE+java的开发工具(javac\java\javadoc\javap)
JRE:java运行环境,JRE=JVM+java的核心类库
所以如果是开发人员,需要安装Java的开发工具就需要下载JDK安装;如果是普通用户,需要运行编译好的class文件就需要安装JRE。 - 环境变量配置过程中,用户变量和系统变量的区别是什么?
用户变量的配置只对当前用户有效,系统变量的配置对该机器上所有用户都有效。 - 默写Hello程序中的报错
public class Hello{
public static void main(String[] args){
System.out.println("hello, world");
}
}
是的,就是上面这个最简单的java程序,我出现了2个报错。
- static和void顺序调换,之后的学习中注意
- 文件命名和class名不一致!
- 术语
.java文件是源文件,.class文件是字节码文件 - java开发注意点
- 一个源文件最多只能有一个public类,其他类不限
- 每一个类都对应一个.class文件
- 如果源文件包含一个public类,则文件必须以该类名命名
- 主方法不仅可以放在public类中,也可以放在非public类中
- 快速学习技术分享
- java中的转义字符
\t
:制表位
\n
:换行
\\
:输出
\"
:注意是英文状态下的双引号
\'
:注意是英文状态下的单引号
\r
:回车 System.out.println(“hellohello\rdajun”); // dajunhello - 数据类型
- 变量名三要素:类型+名称+值
- java中每一种数据都明确定义了数据类型,所以java是强类型语言
- 浮点数 = 符号位 + 指数位 + 尾数位。尾数部分可能丢失,造成精度损失,所以小数都是近似值。
- 浮点数不可以直接比较相等,可以通过比较差值的绝对值的范围得出近似结果。
- 科学记数法:5.12e2 是5.12*10的2次方;5.12E-2 是5.12/10的2次方
- ASCII编码表:一个字节表示,一共128个字符,但一个字节可以表示256个字符
- Unicode表:字母和数字都是两个字节表示,比较浪费空间,unicode码兼容ascii码
- utf-8:字母用1个字节表示,汉字用3个字节表示
- gbk:可以表示更广范围的汉字,字母用1个字节表示,汉字用2个字节表示
- big5:繁体中文,在台湾和香港用得较多
- 数据类型的转换
数据类型按照精度大小排序:
char -> int -> long -> float -> double;
byte -> short -> int -> long -> float -> double;
- byte、short和char之间不会相互转换
- 当把具体 数赋给byte时,先判断该数是否在byte范围(-128~127)内,如果是就可以进行转换。eg
byte b1 = 10;
- byte、short、int三者进行计算时,会首先转成int。就算是两个byte类型的数据计算也会转成int。
boolean类型不参与转换
。- 自动提升原则:表达式结果的类型自动替换为操作数中最大的类型。
- 和String类型的转换:String s = 其他类型 + “”;
- 转换其他类型使用包装类:eg: int i = Integer.parseInt(string);
- 强制类型转换
- 转换的数据精度从大到小,就需要使用强制转换
- 强转符号只针对最近的操作数有效,往往使用小括号提升优先级。
- char类型可以保存int的常量值,但不能保存int的变量值,只能强转。
- 运算符
- 算术运算符
取模运算符:%
a % b:如果a是小数,公式:=a - (int) a / b * b
int j = ++i:先自增再赋值 i=i+1,j=i
int j = i++:先赋值再自增 j=i,i=i+1
经典题目:
int i = 1;
i = i++; // 规则:使用一个temp变量 1. temp=i,2.i=i+1,3.i=temp
System.out.println(i); //输出结果是1
int m = 1;
m = ++m; // 规则:使用一个temp变量 1. i=i+1,2.temp=i,3.i=temp
System.out.println(m); //结果是2
-
赋值运算符
赋值运算符包括基本赋值运算符和复合赋值运算符。
复合赋值运算符会进行类型转换:byte b = 3; b += 2;相当于b = (byte) (b + 2); b++也是一样的道理。 -
关系运算符(比较运算符)
-
逻辑运算符
短路与&&:两个条件都为true,结果为true。如果第一个条件为false,第二个条件不执行。
逻辑与&:两个条件都为true,结果为true。如果第一个条件为false,第二个仍会执行。
短路与
比逻辑与
效率更高。
短路或||:只要一个条件为true,结果为true。如果第一个条件为true,第二个条件不执行。
逻辑或|:只要一个条件为true,结果为true。如果第一个条件为true,第二个条件仍会执行。
短路或
比 逻辑或
效率更高。
逻辑异或:两个条件不同结果为true,相同则为false。
- 位运算符
- 三元运算符
运算符优先级-从高到低
- () {}
- 单目 ++ –
- 算术运算符
- 位移运算符
- 比较运算符
- 逻辑运算符
- 三元运算符
- 赋值运算符