栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Javase第一周

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javase第一周

**

从0开始学Java,第一周学习笔记分享,还请各位大佬、同仁帮忙指正

**

day01 1、Java语言的特点
  • 开源性
  • 面向对象
  • 跨平台性
  • 编译性
  • 动态性
2、Java跨平台的实现原理 【面试题1】

java的跨平台借助于jvm软件识别运行从而达到编译一次到处运行的效果

3、JDK&JRE&JVM

简介:

  • JVM:Java Virtual Matchine,Java虚拟机

    Java虚拟机:是一个使用C语言编写出来的一个可以识别运行java字节码文件的软件,运行在操作系统上的,不能跨平台
    作用:识别运行java字节码文件 
    
  • JRE:Java Runtime Environment,Java运行环境

    java运行环境:由jvm软件 + java代码运行时需要的核心类库 组成的资源包
    jre使用前提:已经拥有了字节码文件
    使用场景:提供给只运行不开发的用户
    组成:jvm + 运行的资源包  
    
  • JDK:Java Development Kit,Java运行环境

    java开发工具包:专门提供给java开发人员使用
    组成:jre + 开发时使用的一些操作源代码的相关工具程序
    
    目录名称说明
    bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。
    include该路径下存放了一些平台特定的头文件。
    jre该路径下存放了jre
    legal该路径下存放了JDK各模块的授权文档。
    lib该路径下存放了JDK工具的一些补充JAR包。
    src.zip这是jdk的源码包

  • JDK&JRE&JVM三者关系

  1、因为jvm有不同平台的版本,所以jdk也有版本之说
4、常用的DOS命令
操作说明
dir查看当前路径下的内容。
cd 目录名进入单级目录。
cls清屏。
cd …返回当前目录的上一级目录
cd /返回当前目录所在的根盘符
md 目录名称创建目录
rd 目录名称删除目录 【要求目录必须是空 不经过回收站】
echo 内容 > 文件名创建一个指定内容的文件
del 文件名删除文件
盘符名称 + :切换盘符
5、环境变量配置
作用:实现bin目录下的java相关命令可以在任意目录下使用。
	   【解决了源文件不在bin目录下不能正常编译运行的问题】
	   
步骤:
	1、先配置JAVA_HOME环境变量		【变量:JAVA_HOME  值:JDK所在目录】
	2、再配置Path环境变量			【在变量Path中新建变量:%JAVA_HOME%bin】
	3、当需要使用不同版本的JDK时,只需要改变变量JAVA_HOME的值即可,避免改变系统变量Path
	
注意事项:
	1. Path 环境变量是系统自带的环境变量,不需要自己创建,只需要增加变量值就可以了.
	2. 注意在配置Path环境变量的时候,不要删除原有的变量值
	3. %JAVA_HOME% 是引用JAVA_HOME 环境变量的值,相当于 直接填入  D:JAVAJDK8JDK  
		这样就可以实现当JAVA_HOME环境变量的值改变时, Path的值也会一起改变,从而减少了频繁修改
		Path 环境变量的麻烦.

day02 1、Java 编码的格式规范及常见问题
格式规范:
    1、左花括号的前面一般加空格
    2、左花括号的后面换行缩进
    3、右花括号的前面换行后和原有的内容对齐
    4、不同代码块【一对花括号】一般使用空行隔开
    5、运算符左右两侧一般加空格
    
注意事项:
    1、大小写区分 ----  java是一门要严格区分大小写的语言
    2、所有的符号都是英文的
    3、符号一般是成对出现
    4、有public的情况下,类名必须要和文件名一致
2、关键字
概述:
    Java中提前定义好的并且赋予这个单词的特殊意义或特殊功能的单词
    一共有50个,在用的只有48个,有两个预留关键字:const  goto
  
特点:
	- 字母全部小写
	- 关键字不能用于标识符【不能用来起名字】

关键字图示:

3、标识符
概述:
	java中用来给java元素【类 方法 变量 枚举 常量等】起名字使用的字符序列
	【直白说:标识符就是就Java中元素的名字】

组成内容:
	1、所有的大小写英文字母
    2、英文符号 _ 和 $
    3、所有的阿拉伯数字【0 - 9 数字】
    4、其他国家语言的字符(实际开发几乎不用)
    
注意事项:
	1、不能是关键字
    2、数字不能开头
    3、不能出现空格
4、Java命名规范
1、总体规范:见名知意
2、类名级别的标识符:
    大驼峰格式:
    	单个单词:首字母大写其他字母小写  Demo
    	多个单词:每个单词的首字母大写 其他字母全部小写  HelloWorld
3、变量级别的标识符:
    小驼峰格式:
    	单个单词:所有字母全部小写  age  name
    	多个单词:第一个单词字母其全部小写 其他单词首字母大写其他字母全部小写  getAge   getSumAndAvg		
4、常量名:
    所有单词所有字母全部大写 单词和单词之间使用_ 隔开  MAX_PRIORITY
5、包名:
    所有的字母全部小写
    包结构:
    	实际开发包至少出现三级 :前两级是公司域名反写  后续的自定义
    	比如:
			com.ujiuye.demo
    `注意:包名与包名之间使用.隔开`	
5、常量
概述:
    Java代码运行过程中,数据值不会发生任何改变的元素就叫做常量。
    java中用来体现固定不变的数据元素
    
特点:
    `java代码中常量不能独立使用`,要想使用常量需要借助于java的其他操作来间接的使用。【输出语句,变量等】

分类【六大类】:
	1、整数常量:所有整数
    2、小数常量:所有小数
    3、字符常量:java中使用单引号包裹单个的文字或符号 比如:'进' 'a' ' '
			特点:`内容有且只有一个元素`
    4、布尔常量:true 或 false
    5、字符串常量:使用双引号包裹字符序列  比如: "jkl"  "字符串常量" ""
    6、空常量:null
6、变量
概念:
	java代码运行过程中,表示的数据值会发生改变的元素叫做变量。
	变量的本质:就是java代码在运行中在内存中开辟的一块只能存放一个数据的空间。
	
定义【两种】:								语法【两种】:
	1、先声明空间,再创建空间放值				1、 数据类型  变量名;
											 变量名 = 值;
	2、直接创建空间存放值					   2、 数据类型  变量名 = 值;
	
作用域:
	1、每个作用域都可以定义自己的变量
    2、小域可以使用大域中的变量资源但是大域不能使用小域
    3、不同的作用域可以定义同名的变量访问的时候就近访问
7、Java数据类型

1、基本数据类型 【四类八种】
  • 整数类型:

    类型所占字节存值范围
    byte1B- 128 — 127【-2^7 — 2^7 - 1】
    short2B-32768 — 32767【-2^15 — 2^15 - 1】
    int4B-2147483648 — 2147483647【-2^31 — 2^31 - 1】
    long8B-263 — 263-1
    • 注意事项:

      1、整数常量在java的代码运行过程自动识别为int类型【整数常量默认数据类型时候int】
      2、long类型的变量在定义的时候,当字面值超过int范围需要在字面值后加 L或l,建议 L
      

  • 小数类型【浮点类型】:

    类型所占字节取值范围
    float【单精度】4B1.4 -45 — 3.402823538
    double【双精度】8B4.9-324 — 1.7976931348623157308
    • 注意事项:

      1.小数类型的字面值常量默认类型是 double类型
      2.float 类型变量在定义的时候,需要在字面值后加 F或f,建议F
      3.double 类型的变量在定义的时候,可以在字面值后加 D或d,也可以不加.
      4.浮点型存储的数据是不精确的数据,所以在运算过程中,其结果也是不精确的.
      5、浮点类型的大小标准比整数类型的标准大【浮点的4个字节比整数类型的8个字节还要大】
      
  • 字符类型:

    类型所占字节取值范围
    char2B【和short一样大的】0 — 65535

    ​ 字符类型变量的赋值方式

    • (1) 通过 '' 形式赋值
      	案例: 
      	char c = 'A';
      (2) 通过ASCII码表赋值
        	案例: 
         	char c = 65;
      	常用的ASCII码表值
             'A' -- 65 'a' -- 97  '0' -- 48
       (3) 通过unicode编码赋值
                案例: 
       	 char c = 'u0041';
      	 说明:  unicode编码采用16进制的形式进行赋值
      

  • 布尔类型:

类型所占字节取值范围
boolean未知true / false
类型所占字节取值范围
boolean未知true / false
类型所占字节取值范围
boolean未知true / false
2、引用数据类型
  • 数组
  • 接口
  • 枚举
  • 注解
8、基本数据类型转换

​ 自动类型提升【隐形提升】:

		定义:
			指的就是小数据类型的数据存入大数据类型的变量中,可以自动提升。
		格式:
			目标数据类型  变量名 = 小数据类型的数据;
		注意事项:
			boolean 类型存放的数据是true 和false 不是数字 ,不参与类型转换

​ 强制类型转换【显性转换】:

		定义:
			把大数据类型的数据存入小数据类型的变量中,可能会造成数据精度丢失,需要人为处理。	
		格式:
			目标数据类型  变量名 = (小数据类型)大数据类型的数据;
		注意事项:
			1. 强制类型转换可能会损失精度,得到错误的数据.
			2. 小数类型强制转换为整数类型时,直接舍去小数部分,只保留整数部分.

9、常量优化机制
编译时,整数常量的计算会直接算出结果,并且会自动判断该结果是否在该数据类型取值范围内

day03 运算符 一、算术运算符
符号作用基本用法
+加法运算, 字符串拼接【+遇到了字符串】
-减法运算
*乘法运算
/除法运算, 得商
%取模取两数相除的余数
++自增变量值自增1
自减变量值自减1
注意事项:
		 java是一门严格区分数据类型的语言:
		 		整数和整数运算,结果还是整数 
		 		小数和其他数字运算,结果为小数  
		 
		 1、运算过程中参与方有一方为小数结果就是小数
		 2、无论什么数据进行运算结果的数据类型向大的数据类型靠拢
		 3、byte short  char 类型的数据在运算的时候自动提升为int,再去运算。
++,--运算:
	1)++: 自增运算符,表示每次让变量值+1
	2)--: 自减运算符,表示每次让变量值-1
	3)使用方式:使用在变量名的前面或后面  
    	【使用要求:只能使用于数字型`变量`【所有的数字  字符】】
  	4)使用场景:
    	单独使用
        混合使用
	5)使用原则:
    	单独使用:
        	符号使用在前或后结果一致。
        混合使用:
        	符号用在前面:
            	先给变量自增或自减,然后参与其他运算【`先赋值,再运算`】
            符号用在后面:
            	先参与其他运算,然后变量再自增或自减【`先运算,再赋值`】
二、赋值运算符
普通赋值:
    = :把符号右边的数据存入左边的变量中
扩展赋值:  
    += -= *= /= %=
    1、使用变量的原始值和符号右侧的数据进行对应的算数运算
    2、把得到的结果重新赋值给左边的变量中
    	【判断结果的数据类型和变量的数据类型是否一致,
    		一致:直接存入
    		不一致:
    			判断是否需要强制转换:
    				需要:自动的强制转换
    				不需要:直接存入
    	】
    `扩展赋值运算符自带强制类型转换`
三、比较运算符
分类:
    > 【大于】
    >=【大于等于】
    < 【小于】
    <= 【小于等于】

    == 【等于】
    != 【不等于】

注意事项:
	`在Java中,一次只能比较两个数据`
	>  >=  <  <= :只能比较数据的大小【只能比较数字类型的数据】
	==   != :可以比大小以及内容【比较任意数据类型的数据】
四、逻辑运算符
概述:
	java中用来表示两个表达式结果之间的逻辑关系【或与非等关系】的符号
    	表达式结果:必须为boolean类型值
分类:
	或关系符号 【|   ||】:有真则真 全假则假
    与关系符号 【&   &&】:有假则假 全真则真
    非关系符号  【!】:表示数据的反面【取反】
    异或关系符号 【^】:相同则加,不同则真
    
注意事项:
	逻辑与& 逻辑非| :
		涉及的两个表达式都会执行
	短路与&& 短路或|| :
		根据第一个表达式的执行结果绝对是否直接得到最终结果,第二个表达式不一定会执行。
		`提示执行效率。`
五、三元运算符【三目运算符】
语法:
	布尔表达式 ? 表达式1 : 表达式2;	【`一般表达式2和表达式3的结果的数据类型属于同一个体系`】
    
执行流程:
		先执行布尔表达式得到其结果:
            true:
                执行表达式2得到结果作为整个三元运算符的结果值
            false:
                执行表达式3得到结果作为整个三元运算符的结果值
六、位移运算符

1、原码、反码、补码:

​ 计算机底层用补码运算。

2、位运算符:

1.位运算概念: 
	位运算符主要按位对每个二进制位(bit)进行相关运算,其操作数和运算结果都是整数型.即只能对		byte,short,char,int,long 类型数据进行运算.
2.Java语言中位运算分为:位逻辑运算符和位移运算符两类.
符号名称基本用法案例
&按位进行与运算(AND)4&5 结果4
|按位进行或运算(OR)4|5结果5
~非(取反)按位进行取反运算(NOT)~4结果5
^异或按位进行异或运算(XOR)4^5结果1
<<左位移按位左移,数值扩大2的倍数10<<1结果20
>>右位移按位右移,数值缩小2的倍数10>>2结果2
>>>无符号右移只针对正数按位右移,数值缩小2的倍数20>>1结果10
1.位移运算:操作数向某个方向(向左或向右)移动指定的二进制位数,运算效率高.
    注意:只适用于整数运算
    
2.<<按位左移:补码按位左移,高位移出(舍弃),最低位补零,移动一位扩大二倍.
	注意事项:
		1、左移会造成最高位数据溢出,可能导致结果错误.
		2、每移动一位正数数据本身扩大两倍,负数本身缩小2倍【整体*2】
		
3.>>按位右移:补码按位右移,最高位补符号位,低位移出(舍弃),移动一位缩小为原来的二分之一
	注意事项:
	1)正数右移得到结果和除法一致
	2)负数右移得到结果和除法不一致,运算过程为将负数转换成对应的补码,右移,移动时高位补1,将移动后的补码结果转换成原码,得到最终结果
	
4.>>>无符号按位右移:补码按位右移,最高位补零,最终正数运算完成之后缩小为原来的二分之一.
	注意事项:
	1)负数不能无符号右移
	2)正数无符号右移效率高于普通按位右移
	
结论:
1、位逻辑运算
    	| & ! ^   [0 表示 假  1 表示真]
2、位移运算
    	<<  :适用于所有的整数
            每次移动一位,数字 * 2
			移动的位数过大 会发生高位溢出错误
		>> :适用于所有的整数
			每次移动一位,数字 / 2
            移动的位数大于数字本身的位数得到的结果是唯一值:
            正数:0  负数:-1
		>>> :适用于所有的正整数
            原则和右位移一样
     `1、正数右移1位 数字本身缩小2倍  负数右移1位数字本身扩大2倍  【整体/2】
      2、正数右移动位数超出数字本身的位数 最终值为0 负数最终为-1`

day04 1、键盘录入【java.util.Scanner】
使用步骤:
	1、导包: 
		import java.util.Scanner;
	2、创建Scanner对象:
		Scanner sc = new Scanner(System.in);
	3、调用功能:
		int num = sc.nextInt();
2、随机数【java.util.Random】
1、功能:
	 nextInt():在int数据类型的范围内随机生成一个整数
	 nextInt(int num):在指定[0,num)范围内随机的生成一个整数 
2、使用步骤:
	1、导包: 
		import java.util.Random;
	2、创建Scanner对象:
		Random r =  new Random();
	3、调用功能:
		int num = r.nextInt()
    	int num = r.nextInt(100);
3、注意事项:
	若要生成取值范围为[n,m]的随机数,则:
		int num = r.nextInt(x)+y;
		其中,y为起始值n,而 x = m - n
3、流程控制语句
分类:
	顺序结构语句:自上而下自左往右的执行的语句 java本身就是遵循这样的执行顺序
	分支结构语句:判断语句【if语句】  选择语句【switch语句】
	循环结构语句:for循环  while循环  do...while循环  死循环  嵌套循环
1、分支结构之判断语句【if语句】
	1、if语句:
		语法格式:
			if(判断的条件){代码段}
		执行流程:
			1、执行判断条件
                true:执行花括号里面的代码段
                false:直接结束判断语句
                
     2、if...else语句:
     	语法格式:
     		if(判断条件){代码段1}else{代码段2}
     	执行流程:
     		判断条件是否成立:
                true:
                    执行代码段1  执行完结束判断语句
                false:
                    执行代码段2  执行完结束判断语句
             
	3、多条件判断【if...else if... 语句】
		语法格式:
			if(条件1){代码段1}
            else if(条件2){代码段2}
            ... 
            else if(条件n){代码段n}
            else {所有条件都不成立要执行的代码段n+1}
		执行流程:
              判断条件1是否成立,成立则执行代码段1;
           否则判断条件2是否成立,成立则执行代码段2;
                          ...
           否则判断条件n是否成立,成立测执行代码段n;
           若所有条件都不成立,执行else{代码段}
2、分支结构值选择语句【switch语句】
语法格式:
	switch(表达式){
        case 常量1:
            执行代码段1
            break;
        ......
        case 常量n:
            执行代码段n
            break;

        default:
            实际执行的开关值和case的开关值没有匹配要执行的代码;
            break;
    }

执行流程:
	1、计算表达式的值
    2、根据这个值和case项的常量自上而下逐一匹配
        匹配成功:执行对应case项中的代码段,只有遇到break才会结束
        匹配失败:
            是否有default项:
                有:执行default的代码段 遇到break 或 花括号结束选择语句
            	无:直接结束选择语句
注意事项:【面试题2】
        1、小括号里表达式的值的数据类型有要求:
            jdk5版本之前:只能传入 byte short  int char
            jdk5版本时:增加 枚举类型  【enum】
            jdk7版本的时:增加了 字符串类型 【String】
        2、每个case项中的break标准格式中不能省略 ,省略了会发生case的穿透【继续执行相邻的下一个case项】
        3、case项的书写没有顺序要求
        4、default项:
                1、可以写在任意case项的位置但是永远都是最后一个来匹配
                2、如果default项没有写在最后面break一定不要省略
                3、建议default项写在最后【break此时可以省略】
3、循环结构之for循环
语法格式:
	for(初始化语句;循环条件;初始化变量改变){循环体}

执行流程【面试题3】:

1、执行初始化语句【只会执行一次】
2、判断循环条件是否成立
    不成立:3、结束循环语句
    成立:
    	3、执行循环体
    	4、执行初始化变量的改变获取下一次的开端值
    	5、回归第2步重新判断循环条件是否成立
    		如果每次回归条件都成立 就会形成 2 3 4 5 步的闭环执行达到了循环体重复执行的效果一直到循环条件不成立			  跳出闭环结束循环语句
4、循环结构值while循环
语法格式:
	初始化语句;
	while(循环条件){循环体;初始化变量的改变}
	
执行流程:
	1、执行初始化语句;
    2、判断循环条件是否成立
        不成立:直接结束while循环语句
        成立:
            直接执行花括号的代码段【循环体+初始化变量的改变】回归第二步重新判断循环条件是否成立,如果每次回归条			  件一直成立,形成了 2 3 步往复执行达到了重复做事情的效果,一直到条件不成立跳出循环语句
	
5、循环结构之do…while循环
语法格式:
	初始化语句;
	do{循环体;初始化变量的改变}while(循环条件)
	
执行流程:
	1、先执行初始化语句
    2、执行do后面的花括号代码段
    3、执行循环条件:
        false :结束循环语句
        true : 回归第2步重新执行花括号代码段 如果条件每次都成立 形成往复执行 一直到条件不成
               立结束循环语句
               
特点:
	`循环体至少会执行一次`
三种循环的对比:
	区别:
		1、格式不一样
        2、for循环标准格式中初始化变量定义在循环内,这个变量属于for循环的作用域,随着for循环的结束和消失
          while循环 和 do...while循环 的初始化变量定义循环的前面,变量的作用域比循环本身大,循环内外都可使用
        3、一般实际开发的时候:【规范】
              知道具体重复次数优先使用for循环
              不知道具体循环次数优先使用while循环
6、循环跳转语句【break continue】
break : 打断  在循环中使用 结束整个循环语句
continue :继续  在循环中使用 跳过当前循环 继续执行后续的循环
7、死循环、嵌套循环
死循环:
	循环条件永远为真,循环体一直执行

嵌套循环:
	循环体为另一个循环
#### 5、循环结构之do...while循环

```js
语法格式:
	初始化语句;
	do{循环体;初始化变量的改变}while(循环条件)
	
执行流程:
	1、先执行初始化语句
    2、执行do后面的花括号代码段
    3、执行循环条件:
        false :结束循环语句
        true : 回归第2步重新执行花括号代码段 如果条件每次都成立 形成往复执行 一直到条件不成
               立结束循环语句
               
特点:
	`循环体至少会执行一次`
三种循环的对比:
	区别:
		1、格式不一样
        2、for循环标准格式中初始化变量定义在循环内,这个变量属于for循环的作用域,随着for循环的结束和消失
          while循环 和 do...while循环 的初始化变量定义循环的前面,变量的作用域比循环本身大,循环内外都可使用
        3、一般实际开发的时候:【规范】
              知道具体重复次数优先使用for循环
              不知道具体循环次数优先使用while循环
6、循环跳转语句【break continue】
break : 打断  在循环中使用 结束整个循环语句
continue :继续  在循环中使用 跳过当前循环 继续执行后续的循环
7、死循环、嵌套循环
死循环:
	循环条件永远为真,循环体一直执行

嵌套循环:
	循环体为另一个循环
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号