JAVA-基础语法-第二周-8月12日-8月17日

cmd:先切盘-->进入目录-->进入.exe目录

1.java的重要指令

(1)javac:将源码编译成(ctrl+s时就自动编译了)字节码

(2)java:执行字节码

java是一种半编译半解释的编程语言

    源代码(.java)--->字节码(.class)--->JVM(虚拟机)执行出结果--->windows/linux

javascrpt是一种解释型语言

    源source(src)代码(.js)--->执行出结果

配置环境变量的目的:让环境变量中的指令可以在操作系统中任何位置执行

java的特性-跨平台(OS-操作系统)

jdk(开发工具包){ jre(运行环境 { jvm( 虚拟机 ) })}

2.java的三个平台

javase:java标准平台,java基础功能和内置API

javaee:java企业级平台,开发b/s架构应用一套API

javame:java移动平台,现在已经已经淘汰了

3.java的数据类型

(变量是一块内存的名字)

  • java是一种强类型的编程语言:声明变量时,必须声明数据类型,且未来不允许再改类型

  • js是一种弱类型编程语言:变量没有数据类型的概念,且变量在使用过程中可以改变类型

java数据类型分为两大类

  • 一. 引用数据类型(默认值为null)

  • 二. 基本数据类型(涉及到默认值)

  • 1.整形:

  • byte占一字节       (1byte=8bit    [-2^8,  2^8)   )

  • short占两个字节   (2byte=16bit   [-2^15,2^15)  )

  • int占四个字节       (4byte=32bit   [-2^31,   2^31)   )

  • long占八个字节    ( 8byte=64bit   [-2^63,  2^63)   )  L:long类型标志

  • 计算机常用进制:

  • 二进制(0b):    转换十进制-->按位的倒序求幂和

  • 八进制(0):      八进制的一位是二进制的三位

  • 十进制(_):      十进制转换直接除所转换的相应位取余,从下向上取结果

  • 十六进制(0x): 十六进制的一位是二进制的四位

  • 2.浮点数:

  • double:8个字节,默认类型

  • flort: 4个字节

  • 3.字符类型:

  • char:  2个字节,'啊',‘A’

  • 4.布尔类型:

  • boolean:1个字节,true、false(不参与任何数据转换)

  • 转换规则:

  • 小的自动转换成大的:byte-->short-->int-->long

  • 整数可以自动转换成浮点数:float-->double (int/long-->float/double  有精度丢失的可能)

  • char可以自动转换成int类型,得到字符对应的unicode(A-65,a-97) ,ASC是Unicode的子集(不包含东亚文字)

  • 布尔类型不参与任何数据转换

  • char可以赋值  char c= ‘\u0041’(10转换成16进制)  -->输出A

  • 强制转换:按照自动转换规则反向操作

  • (1)浮点数转换成整数,损失小数部分的精度

  • (2)大取值范围-->小取值范围, 强制转换

  • (3)(char)int--->char  :得到数字对应的字符

  • (4)布尔类型不参与任何数据转换

4.操作符(运算符)

  • 算数运算符:+,-,*,【/(整数间的除法取整) ---%(取余)----除数不能为零】

  • 赋值运算符:=(将右侧赋值给左侧),+=,-=......(自动类型转换)

  • 比较运算符:< , >, ==,!=(结果为布尔类型的值),instanceof--判断某个对象是否是某个类的实例

  • 单目运算符:(++a:先+1再参与运算, a++:先参与运算再+1  都是自增如果独立成句他俩没区别),--a,  a--

  • 逻辑运算符:&&\&(两者都为真才为真),|| \ |(一者为真就为真),!(取反)

  • 位运算符:&,|,^

  • 三目运算符

5.程序的结构控制

(1) 条件控制

    执行某段代码之前,先检查是否满足某些条件

(a) 独立条件控制

  • 某条件(逻辑表达式)成立,执行代码;不成立什么都不做

  • if(逻辑表达式){

  •      //逻辑成立时需要执行的程序

  • }

  • //逻辑表达式为true时,执行{}中的代码

  • //逻辑表达式为false时,越过{}执行后续代码

(b) 互斥条件控制

  • 如果...否则...,其中进入其中的某一个分支执行

  • if(逻辑表达式){

  •      //逻辑成立时需要执行的程序

  • }else{

  •      //逻辑不成立时需要执行的程序

  • }

(c) 多互斥条件控制

  • 程序会执行第一个“逻辑表达式”为true的分支

  • if(逻辑表达式A){

  •     ...

  • } else if(逻辑表达式B){

  •     ...

  • } else if(逻辑表达式C){

  •     ...

  • }  ...

  • else{

  •     ...

  • }

(d) switch句式 (了解)

  • switch句式只能判断“点状分布”的条件,不能进行“区间分布”条件的判断

  • 仅支持byte,short,int,String,char几种类型

(2) 循环控制

某段代码或某段代码结构需要多次反复执行

(a) 前置条件循环

  • 当“某个条件”成立时,反复执行循环的代码,直至条件不成立

  • while(逻辑表达式){

  •      //逻辑成立时需要执行的程序

  •     //循环代码中应该有使逻辑表达式变成false的代码

  •    // 或者通过中断结束循环,否则可能产生“死循环”

  • }

(b) 后置条件循环(了解)

  • do{

  • }while(逻辑表达式);

  • 区别: while,先判断条件,再执行循环,循环可能一次不执行

  •            do...while, 先执行循环,再判断条件,循环至少执行一次

(c) for循环(次数循环)

  • 有明确次数的循环,有明确循环区间的循环。

  • for(初始化控制信号①; 信号的循环条件②; 信号值的变化④){

  •            循环代码③

  • }

  • ①②③④ -> ②③④  -> ②③④ ->... -> ②(false)

(d) 循环的中断

  • break:     中止整个循环,后续轮次全部不执行了

  • continue: 轮空当前轮次,继续执行后续轮次

  • (e) 循环的嵌套

  • 循环嵌套:尝试两个循环数字的组合

  • break只能中止所在的循环,如果中止的是内部循环,外部仍然继续

6.数组

  • 数组的声明与实例化

    • 用一个变量来描述一组同类型数据

    • 所有数组均是引用数据类型

    • 数组是最基础的“数据结构”:同数据类型,定长(声明时给定长度<最大存储量>),在内存中连续分布

    • 声明:int[] a */ int a[]

    • 实例化:必须直接或间接的声明数组的长度

    • int[] a={1,2,3,4,5};

    • int[] a=new int[5];

    • 语法糖:{1,2,3,4,5}

  • 2. 数组的内存模型(基本数据类型与引用数据类型的区别)

  • 3. 数组操作的内置API

    • a.length   得到数组变量的长度

    • Arrays工具类,包含了一些关于数组操作的方法

    • Arrays.toString(a);   将数组数据转换成字符串形式

    • Arrays.sort(a);    将数组数据进行自然排序(升序),内部使用“快速排序法”

    • Arrays.binarySearch(a, key); 在数组a中利用二分查找,寻找key的位置,前提数组必须先经过排序

7.方法

  • 方法的声明

  • 访问权限修饰符 [限定修饰符] +返回值类型 +方法名(形参:参数列表,,,,,){ 方法体 }

  • public static void main(String[]arrgs){

    • 方法体

    • return 返回值;

  • }

  • 2. 方法的调用

  • 通过 ”方法名(提供参数)“调用方法执行方法的逻辑

  • 如果方法有返回值,需要利用一个同类型的变量进行接收

  • 如果方法没有返回值,不需变量接收,直接调用即可

  • 3. 方法的参数(形式参数和实际参数)

  • 形式参数:形参,声明方法时,参数列表中的变量

  • 实际参数:实参,调用方法时,提供给方法的实际数据

  • 4. 方法的重载(重要)

  • 将一个同名的方法,定义多次。

  • 要求方法名一致,但参数列表必须不一致。

  • (1)参数的个数不同

  • (2)参数的类型不同

  • (3)参数的类型顺序不同

  • 重载与返回值类型无关

  • 重载还有其他名字: overload, 编译时多态。

  • 5. 方法调用的值传递(非常重要)

  • 每调用一次方法,在栈中新建一个”栈帧“入栈

  • 当一个方法执行完毕后,从栈中出栈

  • 正在的执行的方法一定是在栈顶

  • 6. 方法的递归

  • 一个方法调用自身

  • 思路:将一个复杂问题拆解成多个步骤相似的小问题

  • 5!= 5*4*3*2*1

  • 5! = 5*4!

  • 条件1: 推导公式(递归的前进公式)

  • n! = n*(n-1)!  //递归的前进公式

  • func(n) = n * func(n-1)

  • 条件2:递归的边界

  • 1! = 1

  • func(1) = 1

  • 练习:第1个人他有2支笔

  •           第2个人是第1个人2倍多1个

  •           第3个人是第2个人2倍多1个

  •            第6个人有多少支笔

  • f(1) = 2

  • f(2) = 2*f(1) + 1

  • f(3) = 2*f(2) + 1

  • ...

  • f(n) = 2*f(n-1) + 1

  • 斐波拉契数列: 1, 1, 2, 3, 5, 8, 13...

  • f(n) = f(n-2) + f(n-1)

  • f(1) = 1

  • f(2) = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值