JAVA
1.解释java语言半解释半编译
1)解释:(Interpret)的过程是把源程序代码一行一行的读懂,然后一行一行的执行,发生在运行时,产物是运行结果。
2)编译:(Compile)过程是把整个源程序代码翻译成另外一种代码,翻译后的代码等待被执行或者被优化等等,发生在运行之前,产物是另一份代码。
常见的语言中java是半解释半编译语言,解释型语言效率是要高于半解释半编译的。
2.java历史
Java是在1991年由SUN公司的James Gosling(Java之父)及其团队所研发的一种编程语言,第一个版本耗时18个月,最开始命名为Oak(一种橡树)。Java现在广泛应用于各种大型互联网应用,其设计的最初动机主要是平台独立(即体系结构中立)语言的需要,可以嵌入到各种消费类电子设备(家用电器等),但市场反应不佳。随着1990年代互联网的发展,SUN公司看到了Oak在互联网上的应用场景,在1995年更名为Java(印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名),随着互联网的崛起,Java逐渐称为重要的Web应用开发语言。Java的发展可以主要看JavaWeb的发展,Java也见证了互联网的发展过程。
3.Java中JDK、JVM、JRE,三者有什么关系。
- JDK(Java Development Kit)Java开发工具包,包含Java语言、Java虚拟机、Java类库,是支持Java程序开发的最小环境。(JDK10之前youdandu)
- JVM(Java Virtual Machine)Java虚拟机,运行于各种操作系统Linux,Windows,Solaris等之上,执行编译好的Java字节码class文件。
- JRE(Java Runtime Environment)Java运行时环境,包含JavaSE中核心类库API和Java虚拟机,简单理解为JVM+核心类库API。(如果只需要运行,不需要开发,可以安装JRE)
三者有什么区别与联系:
1、JDK 用于开发,JRE 用于运行java程序 ;如果只是运行Java程序,可以只安装JRE,无序安装JDK。
2、JDk包含JRE,JDK 和 JRE 中都包含 JVM。
3、JVM 是 java 编程语言的核心并且具有平台独立性。
4.什么是类?
类,是Java开发中的一个最小的单位,一个Java开发的项目是由一堆类组成的class.
5.idea实例
主方法:是一个程序运行的入口
public static void main(String[] args) {
}
控制台打印输出语句
System.out.println( );
6.命名规则:
1)标识符的命名规则:
在开发中,只要是可以命名的东西,就是标识符
2)类名的命名规则:
(1)只要是字母,数字,下划线,美元符号$组成。数字不能开头。不建议使用$号,下划线尽量不要开头, 推荐使用英文字母和数字,大部分是用字母(英文单词),驼峰式命名,如果类名由多个单词组成, 每个首字母大写。
(2)java注释及其快捷键
1) 单行注释: / / alt+/
2) 多行注释: alt+shift+/
3) 文档注释 alt+shift+j
7.关键字:
关键字不能用来命名!!!关键字都是小写的。
8.拓展:
1.Java中的关键字有哪些?
1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
2)2个保留字(现在没用以后可能用到作为关键字):goto、const。
3)3个特殊直接量:true、false、null。
2.Java的关键字(keyword)有多少个?
51+2个保留字=53个关键字(java的关键字都是小写的!!)
3.Java的保留字(reserve word)有多少个?分别是什么?
Java语言的的保留字是指预留的关键字
1).const 有道释义:n. 常量,常数
用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改
2).goto 有道释义:vi. 转到
指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
Java中的数据类型:2种 基本数据类型和引用数据类型
9.引入数据类型
基本数据类型:4类8种
(1)4类:
1)整型:
a.byte:字节型 -128~127 1个字节=8位
b.short:短整型 -2^15~2^15-1 2个字节=16位 2万多
c.int:整型 -2^31~2^31-1 4个字节=32位 4亿多
d.long:长整型 -2^63~2^63-1 8个字节=64位 4亿^2多
2)浮点型
a.float:单精度浮点型 4个字节=32位。很大,比long还大。小数
b.double:双精度浮点型 8个字节=64位。很大,比long大。小数
3)字符型
a.char:字符型 2个字节=16位 0~255
4)布尔型 boolean,ture,false 1个字节=8位(ture false) 1位(1或0)
10.变量
定义变量:为了后期的维护,重复利用,减少使用字面量
标识符:变量名的命名规则,小驼峰stuNo。变量的值通过=赋值,把等号右面的值在程序中看见一个整数字面量,没有任何数据类型声明的话,它默认是int ,小数默认是 double
11.java中的/除法,如果是两个整数相除,得到的一定是整数
整数和整数做运算,得到的一定是整数
12.精度问题:
整型:4种整数类型,精度是和位数挂钩,位数越大,精度越高
浮点型:double的精度比float要高
浮点型>整型
低精度和高精度的做计算,得到的一定是高精度数据类型的结果
13.为什么int类型的数据给byte给不了?
大给小,有一种可能是小的装不下,所以大不能给小
14.基本数据类型的转换:
1.自动类型转换(自动类型提升)低精度->高精度
2.强制类型转换 高精度->低精度。如果平白无故的想把低精度转成高精度,也是得强转。
public static void main(String[] args) {
byte b = 127;
b = (byte)(b - 1);
System.out.println(b);
}
整型之间,低向高强行转换
public static void main(String[] args) {
double d = 1.9;
int x = (int)d;
System.out.println(x);
}
将double型强制转换成整型(int)
int i1 = 10;
int i2 = 20;
System.out.println((double)i1 / i2);
将int型强制转换成double型
15.a++,++a问题
无论a++还是++a,它的本意是让a自增1
public class Ch05 {
public static void main(String[] args) {
int a = 10;
++a;
a++ = 10
a = 11
++a = 12
a = 12
a++ = 12
a = 13
System.out.println(a++ + ++a + a++ + a);
10 + 12 + 12 + 13
a++:表示先赋值后运算
++a:先运算后赋值
}
}
16. 比较运算符,结果都是boolean类型
> < >= <= == !=
没有三等
int a = 10;
int b = 20;
double c = 10.0;
System.out.println(a == c);
17.赋值运算符:
+= -= *= /= %=
从计算结果来看,a+=1 ---> a = a+1
赋值运算符可以进行数据类型的转换,包括a++也可以。
18.逻辑运算符
与:只有当所有条件都为true,整体的结果才是true。如果有一个为false,则整体即为false
双与:当发现条件中,只要有一个false,则停止判断。(效率高)
单与:无论有多少个false,所有的条件都看。
或:只有当所有条件都为false,整体的结果才是false。如果有一个为true,则整体即为true
双或和单或同双与单与
非:取反
异或:有假有真即为真,全真全假即为假
public static void main(String[] args) {
逻辑运算符 与 或 非 异或
int a = 10;
int b = 20;
与 &&(短路与)&
或 ||(短路或)|
System.out.println(a < 5 & b > 6);
System.out.println(a < 5 ^ b < 6);
}
19.两个小tips:
1.JS组成部分中Bom(浏览器) > Dom(文档)
2.向浏览器输入内容 用InnerText和InnerHTML
20.位运算符
public static void main(String[] args) {
// 位运算符 二进制
// & | ^
// 00001010
int a = 10;
// 00010100
int b = 20;
// System.out.println(a ^ b);
int x = -2;
// <<左移3位
// System.out.println(2 << 3);
// >>右移3位
// System.out.println(5 >> 1);
// >>>无符号右移:将运算符左边的对象向右移指定的位数。采用0的扩展机制,不考虑符号
System.out.println(x >>> 1);
}
21.三元运算符
public static void main(String[] args) {
// 三元运算符 三目运算符
int a = 1;
double b = 20.5;
char c = 'a';
// 条件表达式 ? 表达式1 : 表达式2
// Java里的三元运算符,要求2个表达式的运行结果的数据类型是相同或可以自动转换成相同的
double max = a > 10 ? b : c;
System.out.println(max);
}
22.
public static void main(String[] args) {
// char的特殊性
char a = '你';
int i = a;
// 映射表 ASCII码
// 字符型 abcdefg每一个字符在计算机保存时都是以ASC码的形式
// char类型是16位,short是一样的,可以自动转换成int,long,float,double
// 当char自动转换成数值类型,会对应着ascii码去转换
// 把整数类型转换成char类型,会对应着ascii码去转换
// 由于char类型有这样的特殊性,开发中尽量不适用char
System.out.println(i);
// +号有连接符的功能
System.out.println('你' - '好' * '啊');
}



