-
算法是计算机的核心,编程语言是计算机软件的开发工具
-
机器语言 -> 汇编语言 -> 高级语言,学习成本越低
-
Java核心优势是跨平台/可移植性,特性有面向对象、高性能、分布式、多线程
-
JavaSE、JavaEE、JavaME
-
Java运行机制:编译器将Java源文件编译成class字节码文件,虚拟机将class字节码文件解释成机器语言
-
jdk,Java开发工具包;jre,Java运行时环境;jvm,Java虚拟计算机
-
jdk下载:https://www.oracle.com/java/technologies/javase-downloads.html
oracle账号(仅供jdk下载):908344069@qq.com 密码:Java2019
-
环境变量配置:JAVA_HOME配置jdk目录(tomcat会用到),path配置jdk的bin目录
-
jdk配置测试
java
javac
java -version
- java开发过程
编写Java源代码
将Java文件编译成字节码文件
- javac Java文件名称加后缀(.java)
解释并运行字节码文件
- java 字节码文件名称
-
开发能力:编码能力和调试能力
-
常见dos命令
代码 | 描述 |
---|---|
cd 目录路径 | 进入一个目录 |
cd … | 进入父目录 |
dir | 查看本目录下的文件和子目录列表 |
cls | 清除屏幕 |
上下键 | 查找敲过的命令 |
tab | 自动补齐命令 |
- 注释
单行注释
//注释内容
多行注释
/*
注释内容
*/文档注释
/**
注释内容
*/
- 标识符
必须以字母、下划线、美元符号$开头
大小写敏感,长度无限制,不可以是Java关键字
类名首字母大写,方法和变量首字母小写
使用驼峰式命名
- 变量
可操作的存储空间,空间位置确定,值不确定
Java是强类型操作语言
一个标准变量包含变量类型、变量名、变量值
- 变量类型
局部变量:方法内部初始化的变量,只能在方法内使用
成员变量:类中方法外部初始化的变量,可以在类中全部位置使用
静态变量:使用static定义,从属于类,可以在类中全部位置使用
符号常量:使用final修饰的变量,在初始化值之后不可以改变值
- 数据类型
基本数据类型
数值型
整数类型
类型 占用存储空间 表数范围 byte 1字节 -128 ~ 127 short 2字节 -32768 ~ 32767 int 4字节 -2147483648 ~ 2147483647(约21亿4千万) long 8字节 -263 ~ 263-1
表示形式 案例 十进制整数 int a = -500 八进制整数,要求以0开头 int a = 015 十六进制数,要求0x或0X开头 int a = 0x15 二进制数,要求0b或0B开头 int a = 0b01110011 浮点类型(不精确不可直接用于比较和运算)
类型 占用存储空间 表数范围 精度类型 float 4字节 -3.403E38~3.403E38 单精度类型,尾数精确到7位 double 8字节 -1.798E308~1.798E308 双精度类型,尾数精确到14位
表示形式 案例 十进制数形式 3.14 科学计数法形式 314e-2 public static void main(String[] args) { BigDecimal bd = BigDecimal.valueOf(1.0); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); System.out.println(bd);//0.5 System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5000000000000001 } //浮点类型数据不能直接用于比较和运算,可以通过BigDecimal来操作浮点数
字符型
- 在内存中占2个字节,用来表示在Unicode编码表中的字符,可允许有65536个字符(065535,\u0000\uFFFF),可参考UniCode编码表
- 转义字符
转义符 含义 Unicode值 \b 退格(backspace) \u0008 \n 换行 \u000a \r 回车 \u000d \t 制表符(tab) \u0009 \“ 双引号 \u0022 \’ 单引号 \u0027 \\ 反斜杠 \u005c
- String类型实际上是字符序列(char sequence)
布尔型
- 两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用0或非0的整数替代true和false
- 用来判断逻辑条件,一般用于程序流程控制
引用数据类型
类
接口
数组
- 运算符
- 逻辑与、逻辑或、异或(同为false异为true)、位运算(左移乘2右移除2)
- 字符串运算符
+
,如果字符串多次拼接推荐使用stringbuilder或stringbuffer - 条件(三元)运算符,条件表达式?true:false
- 运算符优先级,推荐使用小括号
- 类型转换
数据类型小转大,自动转换
数据类型大转小,强制转换
注意:浮点数转整数,会丢失精度
- 使用scanner获得键盘输入
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入姓名:");
String s = sc.nextLine();
System.out.println(s+",欢迎您的到来");
}
- 流程控制语句
顺序结构
选择结构
- if单选
- if(){…}else{…}双选
- if{…}else if(){…}else{…}多选
- switch(){…}多值匹配
循环结构
- for(int i=0;i<length;i++){…}
- while(){…}
- do{…}while()
- for(Object o : list){…}
- iterator
- break、continue以及带标签控制循环流程
//九九乘法表案例
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
}
============================================================
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
//用while循环分别计算100以内的奇数及偶数的和
public static void main(String[] args) {
int i=0;
int a=0;//表示奇数和
int b=0;//表示偶数和
while((i+=1)<=100){
if(i%2==1){
a+=i;
}else{
b+=i;
}
}
System.out.println("奇数和:"+a);
System.out.println("偶数和:"+b);
}
=============================================
奇数和:2500
偶数和:2550
//用while循环或其他循环输出1-1000之间能被5整除的数,且每行输出5个
public static void main(String[] args) {
int i=1;
while((i+=1)<=1000){
if(i%5==0){
System.out.print(i+"\t");
}
if(i%25==0){
System.out.println();
}
}
}
========================================
5 10 15 20 25
30 35 40 45 50
55 60 65 70 75
......
955 960 965 970 975
980 985 990 995 1000
//用循环输出101-150之间的质数
public static void main(String[] args) {
a:for (int i = 101; i <= 150; i++) {
for (int j = 2; j < i/2; j++) {
if(i%j==0){
continue a;
}
}
System.out.print(i+"是质数\t");
}
}
=======================================
101是质数 103是质数 107是质数 109是质数 113是质数 127是质数 131是质数 137是质数 139是质数 149是质数
- 方法/函数
普通方法、静态方法
形式参数、实际参数
- java调用方法推荐遵循值传递原则(传递的是数据的副本)
方法重载(参数个数、类型、顺序不同)、重写
- 递归结构(函数自调用)
递归头:决定什么时候结束
递归体:决定什么时候调用自身
无线递归会内存溢出
递归,就像拆盒子,一层一层拆开,直到最后一层,然后从最后一层往前进行计算
优点:程序简单
缺点:耗费时间,耗费内存
//阶乘10
public static void main(String[] args) {
int i=10;
System.out.println(test(i));
}
public static int test(int i){
if(i==1){
return i;
}else{
return i*test(i-1);
}
}
====================
3628800
加油,相信自己!