第一章 简介开发环境
1.java如何实现跨平台?
Java编译器和Java虚拟机 是实现Java程序可以跨平台运行的重要因素
Java编译器
在源程序编写结束后执行编译命令,会将源代码送到Java编译器中,Java编译器仅仅将源代码编译成.class文件。class文件是Java字节码文件,本质上是一种标准化的可移植的二进制格式。它不面向任何特定的处理器,只面向Java虚拟机。
Java虚拟机
Java虚拟机通过解释器——即时编译器,将Java字节码转换成可以直接发送给处理器指令的程序。
将源代码编译成标准化二进制格式的字节码,这个字节码在所有平台都是一样的。之后基于不同的平台采用不同的即时编译器,将字节码转换成满足不同平台需求的代码程序。
2.了解jdk、jvm、jre区别?
- JDK开发工具包
- JRE(运行环境)运行时类库
- JVM(java虚拟机)
- JRE(运行环境)运行时类库
3.掌握java 1.8 LTS开发环境配置
- 下载安装jdk1.8
- 配置开发环境(环境变量)
- JAVA_HOME新建
C:\program Files\Java\jdk1.8 .0_221 - CLASSPATH新建 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
- Path编辑
.;%JAVA_HOME%\bin
(简化配置,不推荐—不配置JAVA_HOME CLASSPATH)
- JAVA_HOME新建
4.掌握jdk 17 LTS开发环境配置
a.解压jak-17_windows-x64_bin.zip
b.配置开发环境(环境变量)-同jdk1.8
5.掌握IDEA开发工具使用
Intellij IDEA IDE
第一步:jetbrains.com 官方下载idea 2023.3.2.zip
第二步:3.jetbra.in
第三步:编辑ij/bin/idea64.exe.vmoptions文件,最后添加如下
-javaagent:d:/soft/ij/jetbra/ja-netfilter.jar
第四步:执行ij/jebra/scripts/install-allusers.vbs
第五步:启动ij/bin/idea64.exe
第六步:启动程序选择激活,复制
6G5NXCPJZBeyJsaWNlbnNlSWQiOiI2RzVOWENQSlpCIiwibGljZW5zZWVOYW1lIjoic2lnbnVwIHNjb290ZXIiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQU0kiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBEQiIsImZhbGxiYWNrRGF0ZSI6IjIwMjUtMDgtMDEiLCJwYWlkVXBUbyI6IjIwMjUtMDgtMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiSUkiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUEMiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMjUtMDgtMDEiLCJwYWlkVXBUbyI6IjIwMjUtMDgtMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNXIiwiZmFsbGJhY2tEYXRlIjoiMjAyNS0wOC0wMSIsInBhaWRVcFRvIjoiMjAyNS0wOC0wMSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQV1MiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBQUyIsImZhbGxiYWNrRGF0ZSI6IjIwMjUtMDgtMDEiLCJwYWlkVXBUbyI6IjIwMjUtMDgtMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFJCIiwiZmFsbGJhY2tEYXRlIjoiMjAyNS0wOC0wMSIsInBhaWRVcFRvIjoiMjAyNS0wOC0wMSIsImV4dG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
IDEA 安装插件
- Chinese
- Translation
- Atom Material lcons
- Cyan Light Theme
- Gitee
- Grep Console
6.其他
C:\Users\ASUS>java
C:\Users\ASUS>java -version
-
HelloWorld.java程序开发编译,并运行测试
class H{ public static void main(String...a){ System.out.println("hello world"); } }
创建记事本notepad,保存H.java
C:\Users\ASUS>cd desktop C:\Users\ASUS\Desktop>cd java C:\Users\ASUS\Desktop\java>javac H.java C:\Users\ASUS\Desktop\java>java H
-
如果运行有中文乱码
a.记事本另存文件编码格式为ANSI
b.如果使用utf-8,java -Dfile.encoding=utf-8 Demo.java 直接运行解决乱码
c.如果使用utf-8,javac Demo.java -encoding utf-8,再运行 java Demo 就没有乱码
public class Chin_garbledcode {
public static void main(String[] args){
System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("user.home"));
System.out.println("中文案例");
}
}
jdk9以后没有jre
如下命令建立jre程序目录
bin\jlink --module-path jmods --add-modules java.desktop,java.base--outputjre
第二章 JAVA基本语法
1、了解java程序类基本结构,和入口方法的位置
Demo.java
class Demo{
//属性-成员属性,成员变量,声明属性,并初始化
//方法-public static void main(String...a) java程序类,入口方法,可以直接执行
}
入口方法:方法的参数必须是
String[] args
String…args
(main()入口方法,一个类中只能一个main方法,代表该类可以直接执行)
2、掌握三种注释的写法和javadoc.exe生成api
-
单行注释
-
//ctrl+/
-
-
多行注释,块注释
-
/* ctrl+shift+/ */
-
-
文档注释
-
/*头 *copyright(c) 2006,2023,webrx.cn All rights reserved. * */ /**class前 * <p>Description: * <p>Class: C4 * <p>Powered by Administrator On 2023-02-07 10:24 * * @author Administrator [Administrator@126.com] * @version 1.0 * @since 17 */ /**class后 * Description: 使用此快捷方式,在方法上输入/mm * @date: 2023/2/7 10:24 * @params: [int] * @return: int */
-
(文档注释、类注释、属性注释、方法注释和类的结构属性与一个javadoc.exe命令相关)
javadoc命令可以根据文字的这些信息,快速生成类的api参考网页
javadoc -d …/api -author -version -charset utf-8 -encoding utf-8 -windowtitle CRM管理系统 *.java
idea tools菜单>Generate JavaDoc…>
Output directory:C:\api
Locale:zh_CN
Command line arguments:utf-8 -charset utf-8 -windowtitle JAVASE入门系统generate
3、了解java标识符、关键字、保留字
标识符(identifier)-是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。
标识符是由字母 数字 下划线 $组成的,不能数字开头,不能使用空格和特殊符号
合法:Dog class_3 price $_7 $123 $23boy abc_123 ¥123 $3 6 ___
非法:.com #myname
保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过
程名使用。
保留字包括关键字和未使用的保留字。
关键字则指在语言中有特定含义,成为语法中一部分的那些字
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
break | 提前跳出一个块 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,eg.用在switch语句中,表明一个默认的分支。java8中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 双精度浮点数类型 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 单精度浮点数类型 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
interface | 接口 |
native | 用来声明一个方法是由与计算机相关的语言(C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super | 表明一段代码需要同步执行 |
synchronized | 表明一段代码需要同步执行 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 声明两个或者多个变量必须同步地发生变化 |
var | java10新增的关键字,用来推断类型var i = 20; |
在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。
例如,Javascript有一些未来保留字,如abstract、double、goto等等。
//模拟goto语句
System.out.println("ok1");
System.out.println("ok2");
loop:
for(;;){
if(false) continue loop;
}
4、java有没有goto、const语句?
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
5、掌握声明使用常量?
常量
eg.π= 3.1415…… 整数123,小数1.23,字符’A’,布尔常量 true、false等
指在程序执行期间其值不能发生变化的数据。
程序开发中,常量名一般全部大写,声明常量时必须赋值,以后只能使用,不能再赋值
java语言声明常量使用final
final-变量前面加final
package cn.webrx;
//静态导入 PI是常量,
import static java.lang.Math.PI;
public class V2 {
//成员,属性
final static int AGE = 18;
public static void main(String[] args) {
//局部 常量
final double pi = Math.PI;
System.out.println(AGE);
System.out.println(pi);
//使用常量
System.out.println(PI);
}
}
运行结果:
18
3.141592653589793
3.141592653589793
6、掌握声明使用成员属性(变量)、局部变量?
变量
是指在程序运行期间可以被改变的量。
变量用于储存信息。它指向内存的某个单元,而且指明了这块内存有多大。
java是强类型,变量必须先声明初始化才可以使用,变量名区分大小写。
package cn.webrx;
import java.util.Date;
public class Var1{
//属性 成员 变量 属性 在实例化会自动初始化
//int 0 double float 0.0 Object null boolean false
Date age;
int[] aa;
//方法
public static void main(String[] args){
//局部变量
//var v = new Var1();
Var1 vv = new Var1();
System.out.println(vv.age);
//System.out.println(vv.aa);
int x = 55;
{
//块级变量
int y = 5;
System.out.println(y);
System.out.println(x);
}
int y = 6;
System.out.println(y);
System.out.println("Hello world");
//合用局部变量,不会自动初始化,在使用的时候必须赋值初始化
//String s = "Hello world";
String s;
s = "ok";
//System.out.println(s.repeat(13));
System.out.println("sq1server");
System.out.println(s);
System.out.println("s");
//save(s) 保存
}
}
JAVA10 var 类型推断声明变量
package cn.webrx;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class Var2{
//错误,var局部变量类型推断,必须声明赋值,不能成员变量
//var i = 5;
public static void main(String[] args){
//要求java 规范必须10 以上版本
var v = LocalDateTime.now();
var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
var list = new ArrayList<Map<String,Object>>();
var a = 15;
a = 16;
var d = new Date();
for(var i = 1.0;i <= 5;i++){
System.out.println(i);
}
}
}
7、掌握数据类型分类,8大基本类型?
两大类
- 引用数据类型
- 基本数据类型
基本数据类型和引用数据类型的区别?
(1)基本类型保存的是值,引用类型保存的是对象的地址,所有基本类型赋值是按值传递(拷贝赋值),引用类型赋值是按引用传递。
(2)基本数据类型是存放在栈中的简单数据段。
(3)引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,
通过这个地址可以快速查找到对象。
8大基本类型:
byte short int long8 float double8 char boolean
可以分为三类:
- 数值型:整数类型(byte8、short16、int32、long64)和浮点类型(float32、double64)
- 字符型:char16
- 布尔型:boolean8
byte<short<int<long<float<double (范围从小到大)
注意:
-
浮点数的默认类型为double(如果需要声明一个常量为float型,则必须要在末尾加上f或F)
整数的默认类型为int(声明Long型在末尾加上l或者L)
-
八种基本数据类型的包装类:除了char的是Character、int类型的是Integer,其他都是首字母
大写
-
char类型是无符号的,不能为负,所以是0开始的
/*
* Copyright (c) 2006, 2023, webrx.cn All rights reserved.
*
*/
package cn.webrx;
/**
* <p></p>
* <p>Powered by webrx On 2023-02-07 15:42:14</p>
*
* @author webrx [webrx@126.com]
* @version 1.0
* @since 17
*/
public class Type1 {
public static void main(String[] args) {
//byte short int long float double char boolean
byte b1 = 5;
System.out.println(b1);
short s1 = 5;
System.out.println(s1);
int i1 = 5;
System.out.println(i1);
long n1 = 5;
System.out.println(n1);
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
float f1 = .5f;
double d2 = .5;
System.out.println(f1);
System.out.println(d2);
char c1 = 'a';
int num = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println(num);
System.out.println(c2);
System.out.println((int) c2);
boolean f = !!!false == true;
System.out.println(f);
int aaa2 = (int)2482482234553L;
System.out.println(aaa2);
double n = 10;
//ctrl + d 复制行
//alt + shift + up(down) 移动行
//快速进入某处代码位置(使用idea 书签) f11 ctrl + f11 shift+f11
}
}
面试题:
1.输出结果是什么?
byte a = 3;
a = a + 1;
System.out.println(a);
2.什么是设计模式?常用的设计模式有哪些?
设计模式是经验总结
常用的设计模式是单例模式等
eg.
//1、
short s1 = 1;
s1 = s1 + 1;
//有什么错?
//答:在进行s1 + 1运算时会自动提升表达式的类型为int,将int类型赋值给short类型的变量s1会出现类型转换错误
short s1 = 1;
s1 += 1;
//有什么错?
//答: 是正确的,+=是java语言规定的运算符,java编译器会对它进行特殊处理,所以可以正确编译
//byte<short<int<long<float<double (范围从小到大)
2、char类型变量能不能储存一个中文的汉子,为什么?
char类型变量使用的是Unicode编码的字符,
Unicode字符集包含了汉字,所以char类型当然可以存储汉字(还有一种特殊情况就是某个生僻字没有包含在unicode编码字符集中,那么就char类型就不能存储该生僻字)
3、Integer和int的区别
int是java的8种内置的原始数据类型。Java为每个原始类型都提供了一个封装类,Integer就是int的封装类。
int变量的默认值为0,
Integer变量的默认值为null,
这一点说明Integer可以区分出未赋值和值为0的区别,(比如说一名学生没来参加考试,另一名学生参加考试全答错了,那么第一名考生的成绩应该是null,第二名考生的成绩应该是0分)
关于这一点Integer应用很大的。
Integer类内提供了一些关于整数操作的一些方法(eg.上文用到的表示整数的最大值和最小值)
4、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
//byte<short<int<long<float<double (范围从小到大)
byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上
long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上
String在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了
5、.64位的JVM当中,int的长度是多少?
Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。
在 32位 和 64 位 的Java 虚拟机中,int 类型的长度是相同的4字节。
6、可以将int强转为byte类型么?会产生什么问题?
可以做强制转换,但是Java中int是32位的而byte是8 位的,所以,如果强制转化int类型的高24位将会被丢弃,byte 类型的范围是从-128到128
//7、判断输出结果
public static void say() {
System.out.println(3 - 2.6 == 0.4);
}
//false ->int类型和float类型做运算会损失精度,所以不等
//byte<short<int<long<float<double (范围从小到大)
System.out.println(3 -2.6 );
//输出结果并不等于0.4
8、java 中 float f = 3.4; 是否正确?
不正确,因为3.4是双精度类型属于double类型,而double类型范围大于float类型,如果想要赋给float类型必须强制转换:
float f=(float)3.4;
或
float f=3.4F;
byte<short<int<long<float<double (范围从小到大)
//9、输出结果?
byte a = 127;
a += 5;
System.out.println(a);
//124
//byte取值范围-128~127 当a+=1时此时已经是超过了byte的临界值此时输出的为-128 、a+=2时输出为-127,以此类推a+=5时输出为-124
10、为什么long l=2000000000可以,而long l=3000000000却编译报错
因为在Java中二十亿和三十亿的默认类型都是int类型的,而二十亿是在int范围类的,三十亿不在int范围内,所以后面的long l=300000000会编译报错。
解决方法:在三十亿后面加上一个大写或者小写的L
11、为什么 int a = 09;会报错
在进制表示中0开头的表示八进制,而八进制中不能出现大于7的数!
//12、输出结果?
int a=10;
double b=3.4;
System.out.println(a>b?a:b);
System.out.println(a);
//输出:10.0 10
//13、输出结果?
int a=128;
byte b=(byte)a;
System.out.println(b);//输出-128,出现了数据溢出
double c=1.23;
int d=(int)c;
System.out.println(d);//输出1,精度丢失
//14、输出结果?
//运算时,运算结果会向较大的类型转换
int a=3;
double b=4;
System.out.println(a+b);//输出7.0
15、为什么 byte b=10b会报错?
byte在java中表示字节,而b表示的是bit
8、掌握算术运算符 + - * / % ++ --?
运算符:是一种特殊符号,用以表示数据的运算、赋值和比较。
表达式:使用运算符将运算数据连接起来的符合Java语法规则的式子。
int i = 20*30;
运算符 | 描述 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
+ | 加 | 2+3 | 5 |
+ | 字符串连接 | ”hello“+2 | hello2 |
- | 负号 | -5 | -5 |
- | 减 | 5-2 | 3 |
* | 乘积 | 2*3 | 6 |
/ | 整除,求整商 | 5/3 | 1 |
% | 取余 | 5%3 | 2 |
++ | 自加 | int i=0;i++;++i | i=2 |
– | 自减 | int i=0;i–;–i | i=-2 |
9、利用入口方法String[] args,编写一个求两个数商和余数的案例程序,并运行出结果?
Integer.parseInt()
int i = 3;
Integer a = 3;
list<int>
list<Integer>
Integer.parseInt(args[0])
//转换
//求商和余数
/*
* Copyright (c) 2006, 2023, webrx.cn All rights reserved.
*
*/
package cn.webrx;
/**
* <p></p>
* <p>Powered by webrx On 2023-02-07 17:45:06</p>
*
* @author webrx [webrx@126.com]
* @version 1.0
* @since 17
*/
public class Ex01 {
public static void main(String[] args) {
int a = 10;
int b = 2;
a = Integer.parseInt(args[0]);
b = Integer.parseInt(args[1]);
//÷×+-
if (a % b == 0) {
System.out.printf("%d ÷ %d = %d%n", a, b, a / b);
} else {
System.out.printf("%d ÷ %d = %d ... %d%n", a, b, a / b, a % b);
}
}
}
10.其他
10.1类型转换
自动类型转换隐式转换
转换规则:从存储范围小的类型到存储范围大的类型,即由低到高。
具体规则为:byte→short(char)→int→long→float→double
强制类型转换(float)3.5;
/*
* Copyright (c) 2006, 2023, webrx.cn All rights reserved.
*
*/
package cn.webrx;
import java.util.Date;
/**
* <p></p>
* <p>Powered by webrx On 2023-02-07 16:09:07</p>
*
* @author webrx [webrx@126.com]
* @version 1.0
* @since 17
*/
public class Type2 {
public static void main(String[] args) {
int a = 30;
//自动转换
long b = a;
//强制转换
byte c = (byte)a;
//Date d = new Date();
//int y = (int)ld.getTime();
}
}
BigDecimal
package cn.webrx;
import java.math.BigDecimal;
public class Var3 {
public static void main(String[] args) {
BigDecimal bignum1 = new BigDecimal(10.0);
BigDecimal bignum2 = new BigDecimal(.5);
BigDecimal bignum3 = null;
//加法
bignum3 = bignum1.add(bignum2);
System.out.println("求和:" + bignum3);
//减法
bignum3 = bignum1.subtract(bignum2);
System.out.println("求差:" + bignum3);
//乘法
bignum3 = bignum1.multiply(bignum2);
System.out.println("乘法积:" + bignum3);
//除法
bignum3 = bignum1.divide(bignum2);
System.out.println("除法结果:" + bignum3);
}
}
long b = a;
//强制转换
byte c = (byte)a;
//Date d = new Date();
//int y = (int)ld.getTime();
}
}
###### BigDecimal
```java
package cn.webrx;
import java.math.BigDecimal;
public class Var3 {
public static void main(String[] args) {
BigDecimal bignum1 = new BigDecimal(10.0);
BigDecimal bignum2 = new BigDecimal(.5);
BigDecimal bignum3 = null;
//加法
bignum3 = bignum1.add(bignum2);
System.out.println("求和:" + bignum3);
//减法
bignum3 = bignum1.subtract(bignum2);
System.out.println("求差:" + bignum3);
//乘法
bignum3 = bignum1.multiply(bignum2);
System.out.println("乘法积:" + bignum3);
//除法
bignum3 = bignum1.divide(bignum2);
System.out.println("除法结果:" + bignum3);
}
}