01java入门阶段

  1. 算法是计算机的核心,编程语言是计算机软件的开发工具

  2. 机器语言 -> 汇编语言 -> 高级语言,学习成本越低

  3. Java核心优势是跨平台/可移植性,特性有面向对象、高性能、分布式、多线程

  4. JavaSE、JavaEE、JavaME

  5. Java运行机制:编译器将Java源文件编译成class字节码文件,虚拟机将class字节码文件解释成机器语言

  6. jdk,Java开发工具包;jre,Java运行时环境;jvm,Java虚拟计算机

  7. jdk下载:https://www.oracle.com/java/technologies/javase-downloads.html

    oracle账号(仅供jdk下载):908344069@qq.com 密码:Java2019

  8. 环境变量配置:JAVA_HOME配置jdk目录(tomcat会用到),path配置jdk的bin目录

  9. jdk配置测试

java

javac

java -version

  1. java开发过程

编写Java源代码

将Java文件编译成字节码文件

  • javac Java文件名称加后缀(.java)

解释并运行字节码文件

  • java 字节码文件名称
  1. 开发能力:编码能力和调试能力

  2. 常见dos命令

代码描述
cd 目录路径进入一个目录
cd …进入父目录
dir查看本目录下的文件和子目录列表
cls清除屏幕
上下键查找敲过的命令
tab自动补齐命令
  1. 注释

单行注释

​ //注释内容

多行注释

​ /*
注释内容
*/

文档注释

​ /**
注释内容
*/

  1. 标识符

必须以字母、下划线、美元符号$开头

大小写敏感,长度无限制,不可以是Java关键字

类名首字母大写,方法和变量首字母小写

使用驼峰式命名

  1. 变量

可操作的存储空间,空间位置确定,值不确定

Java是类型操作语言

一个标准变量包含变量类型、变量名、变量值

  • 变量类型

局部变量:方法内部初始化的变量,只能在方法内使用

成员变量:类中方法外部初始化的变量,可以在类中全部位置使用

静态变量:使用static定义,从属于类,可以在类中全部位置使用

符号常量:使用final修饰的变量,在初始化值之后不可以改变值

  • 数据类型

基本数据类型

数值型

整数类型

类型占用存储空间表数范围
byte1字节-128 ~ 127
short2字节-32768 ~ 32767
int4字节-2147483648 ~ 2147483647(约21亿4千万)
long8字节-263 ~ 263-1
表示形式案例
十进制整数int a = -500
八进制整数,要求以0开头int a = 015
十六进制数,要求0x或0X开头int a = 0x15
二进制数,要求0b或0B开头int a = 0b01110011

浮点类型(不精确不可直接用于比较和运算)

类型占用存储空间表数范围精度类型
float4字节-3.403E38~3.403E38单精度类型,尾数精确到7位
double8字节-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
  • 用来判断逻辑条件,一般用于程序流程控制

引用数据类型

接口

数组

  1. 运算符
  • 逻辑与、逻辑或、异或(同为false异为true)、位运算(左移乘2右移除2)
  • 字符串运算符+,如果字符串多次拼接推荐使用stringbuilder或stringbuffer
  • 条件(三元)运算符,条件表达式?true:false
  • 运算符优先级,推荐使用小括号
  1. 类型转换

数据类型小转大,自动转换

数据类型大转小,强制转换

注意:浮点数转整数,会丢失精度

  1. 使用scanner获得键盘输入
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入姓名:");
    String s = sc.nextLine();
    System.out.println(s+",欢迎您的到来");
}
  1. 流程控制语句

顺序结构

选择结构

  • 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是质数
  1. 方法/函数

普通方法、静态方法

形式参数、实际参数

  • java调用方法推荐遵循值传递原则(传递的是数据的副本)

方法重载(参数个数、类型、顺序不同)、重写

  1. 递归结构(函数自调用)

递归头:决定什么时候结束

递归体:决定什么时候调用自身

无线递归会内存溢出

递归,就像拆盒子,一层一层拆开,直到最后一层,然后从最后一层往前进行计算

优点:程序简单

缺点:耗费时间,耗费内存

//阶乘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

加油,相信自己!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雄行天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值