目录

本周内容

DAY1

1.计算机的基础知识(应用/硬件/软件)

什么是计算机?

计算机的用途

计算机的硬件

计算机软件

软件结构的划分

软件开发

人机交互

人机交互的两种方式

常用的dos窗口命令

Java学习

Java职业发展规划

Java发展历史

Java语言完成的哪些事情

Java平台版本(重点)

关于Java语言特点以及jdk,Jre,jvm的介绍

有jdk--有jre---有jvm,开始编写简单的java程序

1)编写Java代码

2)将.txt后缀名改为.java文件

3)进入jdk安装路径的bin目录里面

4)在里面输入编译指令 javac 跟上java源文件名称xxx.java

5)运行类名.class (字节码文件) java 字节码文件的前缀就是类名

DAY2

1.Java环境变量的配置path(重点)

2.Java中的注释

3.Java中的关键字(识记,记忆)

4.Java中的标识符(识记,记忆)

5.Java中常量

Day3

1. 进制也属于常量的范畴!(进制的转换,不作重点,扫盲)

什么是进制?

进制的由来?

进制的分类

将任意进制转换成十进制

十进制转换成任意进制

2.变量(重点)

什么是变量?

学习Java编程语言,在Java中,如何定义变量?

2.1  变量的概念:三要素

两种定义方式

数据类型有哪些(识记)

定义变量的注意事项

变量的运算注意

Day4

变量的显示转换(强制类型转换,-->强转)

变量的面试题

扩展的算术运算符的特点

赋值运算符的面试题

逻辑运算符(扩展逻辑运算符的面试题

三元运算符

Day5

位运算符(了解)

键盘录入数据--->jdk提供文本扫描器java.util.Scanner

流程控制语句

位异或特点

键盘录入数据的操作步骤

心得体会


本周内容

本周我们学习了,

DAY1

1.计算机的基础知识(应用/硬件/软件)

什么是计算机?

计算机是一个能够高速处理海量数据智能电子设备.

由两部分组成: 软件和硬件

没有安装任何软件的计算机称为裸机.

计算机的用途

科学计算:利用计算机完成数据的运算.

数据存储:完成一些文件的读和写,或者对一些数组内容排序...

计算机辅助设计:CAD工程制图...

人工智能:利用计算机模拟人工思维.

媒体应用:动画,视频...

计算机网络:网络也很重要,一个台计算机没有网络,类似于电话没有电话线一个道理.

计算机的硬件

概念:由电子,机械和光电元件组成的物理装置的总称.

组成:由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等等.

计算机软件

两种:

计算机软件:

dos系统,windows系统,Linux系统,MAC系统

在移动端:Android系统,ios系统

应用软件:

计算机上的安装的客户端软件,如QQ,办公软件wps,wegame软件,....

软件结构的划分

C/S结构 :Client-Server 客户端和服务器端交互

特点:

客户端软件必须升级才能使用服务器端的高版本功能!

典型的应用:QQ客户端,yy语音....

QQ客户端要想去发红包,如果当前版本比较低,必须升级才能使用高版本功能!

B/S结构(架构):Browser-Server 浏览器端和服务器端交互

特点:

只要保证你计算机上有浏览器,无论高版本还低版本都能够访问服务器!

典型的网站: 访问网易新闻等等网站

B/S 结构 后期需要掌握 浏览器(解析前端的页面的时候和服务器交互)

前端学习:Javascript

后端学习:JavaEE核心技术(servlet,服务连接器)

jsp:模板引擎

jdbc:java数据库连接

三阶段:

框架ssm

springboot+vue前后端分离项目

人脸识别

美团外卖

医疗平台--挂号系统

...

软件开发

产品经理---规划

项目经理---人员配备,人员调度,指定需求,管理项目进度,把控项目质量 (技术选型)

组长(主程序员)---分配任务到其他程序员

程序员---按照模块开

从头开始干---根据需求分析---完成数据库表的设计 ---->按照模块编码 前端 /后端/测试/运维

软件:就是使用计算机的数据和指令的集合!

数据:组成软件的核心代码(计算机能够识别的代码)

指令:计算机的符号(dos窗口---windows+r键--输入cmd--->进入)

软件开发:使用开发工具制作软件

开发工具:

前期第一周:notepadd++高级记事本

后期:第二周开始 :idea开发工具软件 / 前端开发工具 HbuilderX 或者webstrom

人机交互

人和人之间交流和沟通,使用人类语言
那么,人和计算机进行交流和交流,需要人输入的指令是计算机能够识别的符号!

比如:在指定磁盘上创建一个文件夹

人机交互的两种方式

方式1:图形界面化(快速)

简单,直观,容易上手!(用鼠标操作即可,快速去创建文件/文件夹/删除等操作)

方式2:命令行方式(掌握指令)

现在是在windows系统上.

Java工程师 最起码以后企业里面.

可能是半个运维(Linux相关的指令起码20-40个指令),可能是半个测试,半个前端

方式2:命令行方式 基本操作

进入dos命令行窗口(dos控制台)

方式1: (推荐)

windows键+r键组合键------>输入cmd----->进入dos窗口

方式2:

在windows开始菜单----输入cmd---->打开命令行提示符(可以右键--以管理员身份打开)---->也就直接进入dos窗口了

常用的dos窗口命令

1)盘符号的切换

盘符号不区分大小写: 回车即可

2)进入指定单个文件夹(目录) cd 目录名称

3)进入多级目录 cd 多级目录的路径

cd 将多级路径的名称复制过来(win10系统/win11系统 在dos窗口直接鼠标右键就粘贴了 )

4)回退上一级目录 cd.. 或者cd ..

5)如果现在处在多级目录路径上,想回退盘符根目录 cd \或者cd\

6)查看(罗列)这个盘符或者目录某个目录的详细信息 dir指令

7)清除屏幕指令 cls(clear scrren)

当你dos窗口上面有很多信息,将上面的信息不用了,删了,使用这个

8) 要在指定的目录里面创建文件夹(目录)

9)创建文件

copy con 文件名称带上后缀名 ----按回车键---进入编辑模式,书写文件内容,书写完成成之后,按---ctrl+z,编辑完成----回车即可!

10)删除指定的文件夹(目录) 注意事项:rd 文件夹名称(目录名称) 只能删除空目录

11) 删除文件 del 指定文件名称 也可以批量删除所有同名的后缀的文件

举例:del *.txt 删除所有带有.txt的文件

12) rd的扩展指令

在windows系统上,想删除带内容的目录(里面有文件或者子文件夹)

rd /s 文件夹名称(目录) :询问删除删除带内容的目录? y/n 选择y就是删除,n不删除

13)系统指令

查看ip地址 ipcon

ping ip地址或者域名:查看自己本机是否通信

ping指令(类似于 二战的时候:驱逐舰找潜艇,利用声呐系统)

36.152.44.95 的 Ping 统计信息:

数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失)

往返行程的估计时间(以毫秒为单位):

最短 = 34ms,最长 = 35ms,平均 = 34ms

如果当前ping和别的计算机之间,如果通信不了,那么两台计算机的防火墙没有关闭,线下的时候,提前将电脑防火墙关闭

Java学习

Java职业发展规划

1)Java开发工程师(主业),毕业之后肯定需要从事这个岗位1-3年(3-5年)不等;

--->项目经理(pm认证 项目管理:不去做技术方面,管理项目进度,成本,人员配备)

--->架构师(系统设计,整个项目框架搭建)....

2)全栈工程师(可能一些自研:需要我们Java的写前端)

3)运维开发

4)测试开发:(白盒测试需要懂编码, Java/Python...)

Java发展历史

Java之父 詹姆斯高斯林 1995年正式推出

Java图标 热气腾腾咖啡图标

sun公司都被oracle公司收购了,安装jdk---下载? 官网 www.oracle.com Java的jdk(软件工具包)--->每半年更新一个版本

Java语言完成的哪些事情

大到物流系统,网银系统,医院系统以及互联网相关行业,小到超市以及便利店收银系统等等 都可以使用Java语言(360行业都会有)

Java平台版本(重点)

JavaSE(Standard Edition): 针对桌面应用程序的解决方案

JavaME( Micro Edition) :针对嵌入式设备提供的一套解决方案

移动端:Anroid基于JavaSE,还需要anroid相关的广播,订阅,服务,,,

Ios系统基于C语言

JavaEE( Enterprise Edition) :针对企业级开发解决方案(以后就是搞这个的!) 学习JavaEE核心技术13种: Servlet ,Jsp ,Spring ,Springmvc, Mybatis, Springboot...

关于Java语言特点以及jdk,Jre,jvm的介绍

Java简单性,健壮性,分布式, (良好的移植性,开源)

JVM:Java Virtual Machine Java虚拟机

假象计算机,自己的网络,自己的内存区域等等;

Jre:Java Runtime Environment Java运行环境,所有的Java应用程序要运行,计算机上必须有Java环境的支持,没有这个东西,运 行不了,而Jre里面包含了Jvm以及Java程序运行时所有需要的核心类库

Jdk:Java Development Kit :Java开发工具包,里面有很多的开发工具 tools.jar包,里面有工具类(Arrays:数组工具 类,Collections:集合工具类...),还包括了jre

三者的关系:Jdk > Jre > Jvm (整个介绍:其实只需要安装jdk即可!)

有jdk--有jre---有jvm,开始编写简单的java程序

dk的安装目录有bin目录----> javac.exe --- 编译的执行性文件 java.exe --- 运行的执行文件 都需在dos窗口里面用到.

1)编写Java代码

//将java代码编写在这个jdk安装目录的bin里面,因为这里面有javac和java这两个指令!
//在jdk的bin里面新建.txt文件--->一定要显示后缀名(电脑上win10 查看---隐藏的后缀名勾上)
//HelloWorld.txt
//Java的最基本单元是类:
class 类名{ 类名:建议是和文件名称一致!
//main方法,程序的入口,能够被安装jdk-->jre--->jvm jvm能够识别这个main方法,解析Java程序
//固定写法
public static void main(String[] args){
//输出在控制台上一句话:"helloworld"
//固定格式:输出语句
System.out.println("helloworld") ; //"",在控制台上就可以将双引号的内容输出展示!}
}//举例class HelloWorld{
public static void main(String[] args){
System.out.println("helloworld") ;}
}

2)将.txt后缀名改为.java文件

3)进入jdk安装路径的bin目录里面

windows+r键--->输入cmd--->dos窗口进入

4)在里面输入编译指令 javac 跟上java源文件名称xxx.java

如果代码没有问题,正常就会产生一个类名.class文件 ---- 字节码文件 .class的前缀的名称是类名

5)运行类名.class (字节码文件) java 字节码文件的前缀就是类名

jvm运行的.class文件

java 类名---回车即可

注意事项:

1)系统上一定将隐藏文件扩展名显示,否则成了.java.txt 其实还是.txt文件

2)写class 类名{} 前面class 写成了Class 错误的,Java严格区分大小写,定义类class定义

3)写public static void main(String[] args){}固定写法 时候,将p大写,void写成了viod都不行! 4)System.out.println("helloworld") ; 将第一个S小写了,不行,第一个S是大写(固定写法)

5)如果输出语句是中文,那么注意:计算机上的文件保存的格式 "utf-8"编码(一个中文对应三个字节) 而dos黑窗口里面的默认编码是GBK,所以需要将本地上文件---写设置为ASCII码表(支持gbk格式)

要将本地上文件---写设置为ASCII码表(支持gbk格式)! 打开java文件,以记事本方式打开,选择另存为--->编码格式 ASCII

DAY2

1.Java环境变量的配置path(重点)

不可能写的所有java文件都放在jdk的bin目录,这里面都是执行性.exe文件,都是在dos窗口用的

不小心删除.java文件(自己的文件),可能误删一些.exe文件,这个 时候jdk就出问题了,

需要配置全局的环境变量path,让我们的java文件可以在任何目录下都能够使用javac编译和java运行指令!

主要的配置的是Path(重点)

path:配置好之后,肯定需要现在进入到指令java文件所在目录里面,然后才去使用javac和java

path有两种方式配置:都分别说一下,说下优劣!

classpath(了解一下即可,以前很早使用 临时环境变量,现在使用非常少)

可以系统环境变量配置,classpath 指定为xx.class文件(字节码文件)地址

classpath配置的地址是D盘根目录的 HelloWorld.class

2.Java中的注释

//单行注释
//这是我们的固定格式 定义类的格式
// class 类名{},类名建议和文件名称一致
class CommonsDemo{/*多行注释*//*这是main方法,jvm能够识别的程序入口所有的程序入口都是main方法这也是会固定的格式 public static void main(String[] args){}*//**文档注释,这是一个特殊,通过jdk的安装目录里面bin里面javadoc.exe指令能够解析文档注释产生文档说明书,作者是谁 (面向对象部分讲 "简易文档说明书的制作")@author  高圆圆@version V1.0*/public static void main(String[] args){//这是一个固定格式:输出语句 System.out.println("任何字符串内容") ;System.out.println("这是我第一个java代码,加入注释解释说明代码!") ;}
}

3.Java中的关键字(识记,记忆)

/*java:关键字:被Java语言赋予特定含义的单词,叫关键字!在高级记事本notepad++以及editplus记事本以及开发工具idea/eclipes等等针对关键字有一种颜色标记package:包名(文件夹/目录结构):以后在开发代码中分包,分层的(真实的意义:在面向对象部分)class:定义类的格式,Java中最基本的单元就是类 固定格式class 类名{}还有其他权限修饰符 private,protected,具体的讲解在面向对象部分去讲static:静态修饰符(面向对象部分的讲解,本身的含义被"共享,共用")变量里面的数据类型都是关键字注意事项:goto/const这两个字 作为"保留字"去使用;
*/class KeyWordDemo{public static void main(String[] args){System.out.println("被Java语言赋予特定含义的单词!");}}

4.Java中的标识符(识记,记忆)

/*标识符:(起名字:"见名知意")对包,类名,接口名,变量名,常量名起名字的一个字符序列!组成规则:1)有0-9个数字组成(不能开头)2)字母符号(26个字母)3)$符号4)_下划线对包名(目录结构package)起名字规范单级包:(字母都是小写)  com包名xx.java多级包:包名和包名使用.隔开com.qfcom下面会有一个文件夹xx.java文件对类名和接口起名字之同样的:定义类的时候:如果类名是单个单词,首字母大写,其余小写(遵循阿里规范:大驼峰命名法)举例class Hello{}class Demo{}如果类名它是多个单词组成,每个单词首字母大写,其余小写举例:class HelloWorld{}class MakeNameDemo{}class StartGame{}对变量名和方法名起名字的规范(相同):(遵循小驼峰命名法)如果变量名是一个单词,那么 单词字母全小写举例:定义价格int price = 100;如果变量名是多个单词,那么第一个单词字母小写从第二个单词开始,每个单词首字母大写,其余小写!举例:定义苹果价格int applePrice = 7;对常量起名字(以后看到Java的源码里面常量的格式:使用的多个单词写的)如果常量名是单个单词,字母全部大写举例:HELLO如果常量是多个单词,字母全部大写,单词和单词中间用"_"隔开 jdk提供的Thread类:线程定义线程优先级三个常量:只看格式()注意事项:1)起名时,可以是数字,但是不能以数字开头2)java严格区分大小写,一定要起名字见名知意3)标识符不能是java中关键字
*/class MakeNameDemo{public static void main(String[] args){//起名字,可以是数字,但是不能以数字开头//int 1num =10;int num =10;//int Public = 100;//严格区分大小写,不能是特别单词,p小写成关键字,标识符不能是关键字int public = 100;//标识符不能是java中关键字}}

5.Java中常量

/*
常量:常量在程序过程中,其值不发生改变的量!分类:字面值常量1)字符串常量:使用英文的符号""双引号括起来的任何内容都是字符串举例"helloworld""我爱何敏""今天天气不好,心情是绿色的"2)字符常量:使用英文的''单引号括起来的单个字符内容'a':小写字母a不能'ab'---jvm解析的时候,认为这个字符串,不是单个内容,解析错误如果字符参与运算的时候,此时(键盘上的每一个按键都是字符)  它就会去找ANSI码表里面的字符对应的值,进行运算;'a'----97'A'----65'0'----483)整数常量100,974)小数常量3.145)空常量一般不能直接输出null在引用数据类型(数组说),默认null自定义常量:跟一个关键字 final(面向对象讲,状态修饰符)
*/class ConstantDemo{public static void main(String[] args){System.out.println("我爱何敏,你呢?");System.out.println("helloworld");System.out.println("-------------------------------");System.out.println('a');System.out.println('A');System.out.println('0');//System.out.println('asd')错误的System.out.println('a'+1);System.out.println('A'+1);System.out.println('0'+1);System.out.println("--------------------------------");//整数常量System.out.println("100");System.out.println(100);System.out.println(10);System.out.println("--------------------------------");//小数常量System.out.println("100");System.out.println(1.234);System.out.println("--------------------------------");//布尔常量System.out.println(true);System.out.println(false);System.out.println("--------------------------------");//空常量String s = null;//空值System.out.println(s);}}

Day3

1. 进制也属于常量的范畴!(进制的转换,不作重点,扫盲)

什么是进制?

进制就是数据进位的一种方式.

x进制:逢X进1

进制的由来?

早期的时候,使用(电信号)电子元件的开和关来表示数据,带表0和1.

国际组织规定:在表示的数据时候,字符内容越来越多,为了要描述根据的数据,它要使用8个这样的电信号来表示一个数据,这个比特!

进制的分类

二进制:8个比特位(逢2进1),以"0B开头"

八进制:在二进制的基础上,从右到左每三个比特位位一组,左边不够的补0,最终计算出每个位(三个比特位一组)上的十进制数据,从左到右在进行排列,就形成了八进制!

十六进制:在二进制的基础上,从右到左,每四个比特位一组,分别计算出每组的十进制,从左到右排列,从左到右排列,最终成为十六进制

将任意进制转换成十进制

位权展开法:

X进制---十进制:

=系数*基数的权次幂相加的结果!

系数;就是当前每一个位上的数据本身

基数:就是X进制----二进制基数就是2,八进制基数就是8,十进制基数就是10,十六进制,基数就是16

基数上的权次幂:从右边开始每一个基数上进行标记,从0开始.

十进制转换成任意进制

短除法:基数取余,直到除到商为零为止,余数反转!

2.变量(重点)

什么是变量?

在程序过程中,其值发生改变的量;

学习Java编程语言,在Java中,如何定义变量?

2.1  变量的概念:三要素

1)数据类型
        2)变量名
        3)初始化值

两种定义方式

1)先定义,然后在赋初始化值
                    数据类型 变量名;
                    变量名 = 值;  (在使用这个变量之前,必须赋值,否则编译报错!)
 2)要么直接定义时候赋初始化值
                    数据类型 变量名 = 初始化值;

数据类型有哪些(识记)

分为两大类
            基本数据类型:
                    四类八种
                        1)整数类型: 有四种,默认int (讲课过程,没有明确类型都是int)
                                byte:字节类型        占1个字节    范围:-128~127(必须记住)
                                short:短整型        占2个字节     
                                int(默认)            占4个字节
                                long:长整型            占8个字节
                                        在定义long 的时候,规定,在初始化值加上L或者l
                                
                            
                                
                        2)浮点类型:默认double
                                单精度类型float ,在定义float类型后面规定,            占4个字节
                                        需要标记,在初始化值的后面加上F或者f
                                        
                                双精度类型duoble:                                    占8个字节
                        3)字符类型:        
                                char:  里面的内容'字符'                             占2个字节
                        4)布尔类型:开发中,逻辑判断的true还是false的结果
                                
                                
                                boolean    一般boolean不参与运算,只是表示true或者false    占1个字节
                    
                    
                基本类型里面整数类型开发中:
                        用最多的int,其次long    
                    (long类型定义时间毫秒值,后期通过常用类的功能,将系统时间得到时间毫秒值)
                    
                基本类型里面的浮点类型:使用最多的double(市场价格/商场价格...)
                    
            引用数据类型:(后面 面向对象说    讲数组里面去说)
                    数组,类,接口
                        类(具体类/抽象类)

class DataTypeDemo{public static void main(String[] args){//测试//1)基本类型的整数类型//字节类型byte b = 120 ; //-128~127System.out.println("b:"+b) ;//+字符串拼接符号 "b:"+b  b:120 (为了输出格式好看)System.out.println("-----------------------------------------------") ;//短整型shortshort s = 100 ; //变量在变化s = 110 ; //重新赋值System.out.println("s:"+s);System.out.println("-----------------------------------------------") ;//int类型(整数默认)int i = 10000;i = 100000;System.out.println("i:"+i) ;System.out.println("-----------------------------------------------") ;//如果定义int类型的变量:值非常大,此时如果不能使用int类型接收//Java提供长整型long//long t = 1000000000000;//DataTypeDemo.java:82:错误: 过大的整数:1000000000000//jvm在进行解析,整数默认int,而你这个值现在完全已经超过了范围,就会报错//定义long类型的时候,初始化的值后面加上标记L或者llong t = 1000000000000L ;System.out.println("t:"+t) ;System.out.println("-----------------------------------------------") ;//浮点类型:默认double//单精度float:规定,浮点默认double,//但是现在定义的时候就要定义float,只能在后面加入F或者f,标记是float类型//float f = 12.34 ;//错误: 不兼容的类型: 从double转换到float可能会有损失float f = 12.34F ;System.out.println("f:"+f) ;double d = 12.56;System.out.println("d:"+d) ;System.out.println("-----------------------------------------------") ;//字符类型char ch = 'a' ;ch = '0' ;System.out.println("ch:"+ch) ;System.out.println("-----------------------------------------------") ;//布尔类型booleanboolean flag = true;flag = false ; //重新赋值System.out.println("flag:"+flag) ;}
}

定义变量的注意事项

1)在Java语言中(强类型语言:语法结构非常严谨;
            弱类型语言:语法结构非常不严谨,前端javascript)
                同一个变量不能被定义多次
            2)我们现在定义都是局部变量(在方法定义中的变量 比如main中写)
            他们在使用之前,必须初始化,否则就出现错误!
            3)定义变量:在某一行定义一个变量即可(格式角度去说)
                    在定义变量,在写一行  ,一行代码结束,遇见分号,另起行了
                    
            有的面试题,必须题,同一行定义多个变量;

class DataTypeDemo2{public static void main(String[] args){//定义一个变量int a = 20 ;//int a = 10 ;//DataTypeDemo2.java:15: 错误: 已在方法 main(String[])中定义了变量 aa = 10 ;//重新赋值System.out.println("a:"+a) ;//定义一个变量x,yint x = 15; //初始化15int y ; //定义了,但是没有赋值//System.out.println("y的值是:"+y) ;//使用之前,没有给y赋值  (DataTypeDemo2.java:25: 错误: 可能尚未初始化变量y)y = 20 ;System.out.println("y的值是:"+y) ;/*我们自己写建议这种格式int m = 100 ;int n = 10 ;int z = 200 ;*/int m = 100,n =10,z;z = 200;//给z初始化}
}

变量的运算注意

变量的运算注意----->变量的数据类型一致,才能运算!
    
    Java中隐式类型提升(隐式转换)(基本数据类型非常重要语法)
    boolean不参与任何运算(不能转换)
    
    byte,short,char三者之间不会相互转换,一旦参与运算,会优先提升
    int(考点)---->long--->float---->double

class DataTypeDemo3{public static void main(String[] args){//定义两个变量int a = 3 ;byte b = 4 ;//如果接收结果类型是int类型int result = a + b ; //=左边:目标int//=右边: int类型的a和byte类型的b  //=右边:byte类型的b先提升为int类型的4 在和int类型的a的值相加System.out.println("reuslt的结果是:"+result) ;}
}

Day4

变量的显示转换(强制类型转换,-->强转)

//显示转换:强转类型转换:就是将大的数据类型---转换成小的数据格式
//目标数据类型 变量名 = (目标数据类型)初始化值;
class DataTypeDemo{
public static void main(String[] args){
//定义两个变量
int a = 4 ;
byte b = 3 ;
//现在使用的接收类型是byte类型
//byte result = a + b ;//不兼容的类型: 从int转换到byte可能会有损失
//(byte,short,char三者之间不转换,一旦参与运算,优先提升int)
// =右边:int类型+byte类型的b,先要将byte类型提升int,结果int类型,
//=左边:byte类型, 无法存储int类型的结果
//目标数据类型 变量名 = (目标数据类型)(初始值在或者表达式);
byte result = (byte)(a+b) ;
System.out.println("结果是:"+result) ;
}
}

变量的面试题

面试题1

/*
经典面试题
定义三个变量
byte b1 =3,b2 =4 ,b;
1)b = b1 + b2; //错误
b = b1 + b2; b1先提升int b2提升int 结果就是int类型的7,
但是b变量类型byte接收不了int类型结果,解决方案:使用强转类型转换
2)b = 3 + 4 ;正确 7--->在byte范围内
上面代码哪一处会编译失败?为什么,怎么改进?
考点:1)变量和常量相加区别:
变量相加,需要考虑类型转换,(Java中隐式类型转换)
byte,short,char三者不转换,一旦参与运算,优先提升int,--->long--->float--->double
常量相加:先相加,然后看计算的结果是否在接收类型范围内,在直接用,否则,需要处理!
2)Java隐式转换和显示转换(刚才说的这些格式概念)
*/class DataTypeTest{
public static void main(String[] args){
//定义三个变量
byte b1 =3,b2 =4,b;
//b = b1 + b2;// 从int转换到byte可能会有损失
/*
b = b1 + b2; b1先提升int b2提升int 结果就是int类型的7,
但是b变量类型byte接收不了int类型结果,解决方案:使用强转类型转换
*/
//强转
//目标类型 变量名 = (目标类型)(初始化值或者表达式);
//b = (byte)(b1+b2) ;
//System.out.println("b的值是:"+b) ;
b = 3+4 ;//先相加,然后看计算的结果是否在接收类型范围内,
//在直接用,否则,需要处理!
System.out.println(b) ;
}
}

面试题2

/*面试题2
byte b = 300 ; 编译会报错吗?为什么,如何解决?请描述解析过程
byte类型的取值范围 -128~127
*/
class DataTypeTest2{
public static void main(String[] args){
//定义变量
//byte b = 300 ;// 从int转换到byte可能会有损失
//jvm校验语法,发现300的值已经超过接收类型 范围,整数默认int
//最终结果int类型
//解决方案:强转类型转换
byte b = (byte)300;
System.out.println("b:"+b) ;//b:44
}
}
/*
解析过程:
300---已经超过了byte类型范围,使用int接收
4个字节,先计算300的数据原码
最高符号位 数值位
0 0000000 00000000 00000001 00101100
整数的原码,反码,补码都相同
(0 0000000 00000000 00000001) 00101100 ----> byte b = (byte)300;
//将4个字节的int强转为一个字节byte,使用补码 截取
补码--->最高位是0,正数,---反码,原码都相同
00101100
= 0+0+32+0+8+4+0+0
= 44
byte b = 129 ;中午自己操作一下(这周考试题就是byte取值范围的考点)
*/

扩展的算术运算符的特点

++或者--
1)场景--->统计场景(统计用户的登录次数,猜数字游戏,统计用户多少次猜中了)
2)流程控制语句循环结构语句中--->++或者--
使用方式
1)不参与运算,单独使用
a)在数据的前面
b)在数据的后面
结论:
无论++或者--在数据的前面还是后面,都是对当前数据进行自增1或者自减1
2)参与运算
a)在数据的前面
结论:
++或者--在数据的前面,先进行增1或者自减1,然后参与运算!
b)在数据的后面
++或者--在数据的后面,先运算,然后进行自增1或者自减1 !
class OperatorDemo2{
public static void main(String[] args){
//定义两个变量
int a = 4 ;
int b = 3 ;
System.out.println("原数据是:") ;
System.out.println("a:"+a+",b:"+b) ;
System.out.println("--------------++或者--在数据的前面或者后面------------------") ;
//++a ;
//--b ;
a++;
b-- ;
System.out.println("a:"+a+",b:"+b) ;
System.out.println("------------------------------------------------" ) ;
//定义两个变量
int x = 3 ;
int y = 6 ;
System.out.println("x:"+x) ;
System.out.println("y:"+y) ;
//++或者--,参与运算,在数据的前面
//int m = ++x ;
//int n = --y ;
//++或者--,参与运算,在数据的后面
int m = x ++ ;
int n = y -- ;
System.out.println("x:"+x) ;
System.out.println("y:"+y) ;
System.out.println("m:"+m) ;
System.out.println("n:"+n) ;}
}

赋值运算符的面试题

/*面试题:
short s = 1 ;
1)s = s + 1 ;
2)s +=1;
这个1),2)两段代码,哪一个会编译失败,哪一个成功,为什么?
1)这个代码会编译报错,因为存在Java隐式类型转换
byte,shor char 三者不转换,一旦参与运算,优先提升为int,所以
s = s + 1 ;s先提升int和1相加,结果是int类型,而s类型short,无法接收int类型结果
2)s +=1 ; 会成功,
因为扩展赋值运算符+=,-=,*=,/=,%=,有一个特点:隐藏了强转类型转换
s +=1 此时等价于s = (short)(s+1) ;
*/

逻辑运算符(扩展逻辑运算符的面试题

面试题: 逻辑双与&&和逻辑单与&有什么区别?

共同点: 无论是逻辑单与&还是逻辑双与&&都是表达并列关系, 而且都是有fasle则false!

不同点: 逻辑单与&,对多个并列条件在执行的时候,效率比较低,因为都 需要将这个符号左边的表达式和右边的表达式都需要执行一遍!

逻辑双与&& , 连接的表达式如果左边为false,则右边不执行(具有短路效果) 开发中扩展的逻辑运算符,代替基本的运算符,执行效率高!

/*
扩展的逻辑运算符
逻辑双与&& 和逻辑双或||
逻辑双与&&:
连接的表达式如果左边为false,则右边不执行(具有短路效果)
逻辑双或||:
连接的表达式如果左边为true,则右边不执行(具有短路效果)
*/
class OperatorDemo2{
public static void main(String[] args){
//定义三个变量
int a = 3 ;
int b = 4 ;
int c = 5 ;
//逻辑双与&& 满足基本特点:有false,则false
System.out.println((a>b) && (a>c)) ;//false && false = false ;
System.out.println((a>b) && (a<c)) ;//false && true = false ;
System.out.println((a<b) && (a>c)) ;//true && false = false ;
System.out.println((a<b) && (a<c)) ;//true && true = true ;
System.out.println("-----------------------------------------------------") ;
//定义两个变量
int x = 3 ;
int y = 4 ;
System.out.println("x:"+x) ;
System.out.println("y:"+y) ;
System.out.println("-----------------------------------------------------") ;
//逻辑单与&
//System.out.println(((++x)==3) & ((--y)==4)) ;//false
//System.out.println("x:"+x) ;//4
//System.out.println("y:"+y) ;//3
//逻辑双与&&
System.out.println(((++x)==3) && ((--y)==4)) ;//false
System.out.println("x:"+x) ;
System.out.println("y:"+y) ;
}
}

三元运算符

/*
三元运算符(三目运算符)
格式:
(表达式)?执行true的结果:执行false的结果;
执行流程:
表达式可以简单可以复杂,如果结果是true成立,则执行成立的结果
否则不成立,则执行false的结果
需求:
定义变量,求两个变量最大值(没有提示,都是int类型)
三个数据比较最大值?
*/
class OperatorDemo{
public static void main(String[] args){
//定义两个
int a = 10 ;
int b = 5 ;
//套用格式
//(表达式)?执行true的结果:执行false的结果;
//定义变量max
int max = (a>b)?a:b ;
System.out.println("两个数据中的最大值是:"+max) ;
System.out.println("---------------------------------------") ;
//定义三个变量
int x = 20 ;
int y = 50 ;
int z = 30 ;
//方式1:使用中间变量的方式 (推荐)
//使用中间变量的方式记录一下x和y的最大值
int temp = (x>y)? x:y;
//使用中间变量的结果和z进行比较
int max2 = (temp > z)? temp : z ;
System.out.println("三个数据中的最大值是:"+max2) ;
System.out.println("---------------------------------------") ;
//方式2:不建议(使用括号标记,格式好看,否则没有括号,不好看)三元运算符的嵌套
int max3 = (x>y)?((x>z)?x:z):((y>z)?y:z) ;
//int max3 = x>y?x>z?x:z:y>z?y:z ; //不带括号,阅读性很差
System.out.println("三个数据中的最大值是:"+max3) ;}
}

Day5

位运算符(了解)

位运算符号:-----哈希里面涉及到位运算符号
基本的位运算符号:
            位与&
            位或|
            位异或^
            反码~
            
移位符号:
            << 左移     结论
            >> 右移      结论
            >>> 无符号右移

键盘录入数据--->jdk提供文本扫描器java.util.Scanner

让我们书写程序的时候,更加灵活----通过键盘录入数据

Scanner类就提供了很多功能(方法)--->快速键盘录入一些int类型,来进行运算或者写具体的逻辑!

流程控制语句

顺序结构语句

/*流程控制语句顺序结构语句 :比较简单,所有程序都是通过jvm调用main进行的(入口)代码右上而下依次加载,除非在加载后面代码之前,jvm退出了!选择结构语句ifswitch循环结构语句forwhiledowhile
*/class OrderDemo{public static void main(String[] args){//代码由上而下依次加载System.out.println("程序开始了...") ;System.out.println("helloworld") ;System.out.println("程序结束了....") ;//jdk提供了System类有一个功能,exit(0),参数为0,正常终止jvmSystem.exit(0) ;//固定格式先记住:可以终止jvmSystem.out.println("over") ;}}

选择结构语句
    if语句(三种格式if/if...else/if ...else if...else)
    switch语句(考点)

/*选择结构语句之if格式1:if(表达式){语句;}场景:针对单个情况进行判断格式2:if(表达式){语句1;}else{语句2;}场景:针对两种情况进行判断格式3:if(表达式1){语句1;}else if(表达式2){语句2;.........}else{语句n;}场景:针对多情况进行判断上面格式1的流程://格式1:{}里面单条语句,可以省略,但是前期不建议if(表达式){       语句;}表达式是否成立,成立,则执行语句;否则,不执行*/
//导包
import java.util.Scanner ;
class IfDemo{public static void main(String[] args){//创建键盘录入对象Scanner sc = new Scanner(System.in) ;//提示System.out.println("请输入一个数据x的值:") ;int x = sc.nextInt() ;//格式1if(x>=10){System.out.println("x的值是:"+x);}System.out.println("over") ;}
}
/*if格式2:if(表达式){语句1;}else{语句2;}场景:针对两种情况进行判断  (开发中使用最多的格式)完成"登录"/"注册"执行流程:表达式成立,则执行语句1;否则,执行语句2;  注意事项:无论if格式哪一种,不能再if后面来一个;  记住:有{大括号的地方,不能有分号,有分号地方不能有左{使用格式2:完成简单模拟"登录"String:Java中的类,代表字符串   (后面常用类里面说)字符串进行比较: String类的   字符串值1.equals(字符串值2) ,是比较字符串内容是否相同*/
class IfDemo2{public static void main(String[] args){//定义变量int x = 10 ;//if(x>=10);  //没有意义//{} 称为"代码块"//{//System.out.println("x大于等于10") ;//}if(x>=10){System.out.println("x大于等于10") ;}else{System.out.println("x小于10") ;}}
}
/*if语句格式3格式3:if(表达式1){语句1;}else if(表达式2){语句2;.........}else{语句n;}场景:针对多情况进行判断执行流程:首先,判断表达式1是否成立,成立,则执行语句1;否则,不成立,继续判断表达式2是否成立,成立,执行语句2;否则,不错成立...依次判断........如果上面都没有匹配的结果, 执行else中的语句n;没有提示数据类型,都是int     需求键盘录入学生成绩(满分100分),判断该学生成绩的等级的划分90-100           "优秀"80-90             "较优"70-80             "良好"60-70             "及格"60以下          "不及格"
*///导包
import java.util.Scanner;
class IfDemo3{public static void main(String[] args){//创建键盘录入对象Scanner sc = new Scanner(System.in) ;//提示并录入数据System.out.println("请您输入的学生的成绩: ") ;int socre = sc.nextInt() ;/*if(表达式1){语句1;}else if(表达式2){语句2;.........}else{语句n;}*//*           if(socre>=90 && socre<=100){System.out.println("优秀") ;}else if(socre>=80 && socre<90){System.out.println("较优") ;}else if(socre>=70 && socre<80){System.out.println("良好") ;}else if(socre>=60 && socre<70){System.out.println("及格") ;}else{System.out.println("不及格") ;}*///测试程序://测试正确数据:正常范围内的数据//测试边界数据:边界数据的是否在我们指定范围内//测试错误数据:超了范围,不满足,应该也要包含进去if(socre<0 || socre>100){System.out.println("您输入的数据有误!") ;}else if(socre>=90 && socre<=100){System.out.println("优秀") ;}else if(socre>=80 && socre<90){System.out.println("较优") ;}else if(socre>=70 && socre<80){System.out.println("良好") ;}else if(socre>=60 && socre<70){System.out.println("及格") ;}else{System.out.println("不及格") ;}}
}

循环结构语句
    for循环:开发中常用的
    while循环:
    do-while循环: java源码里面使用多一些 (工程上使用的比较少)

位异或特点

一个数据被另一个数据位异或两次,其值是它本身

{public static void main(String[] args){//方式1:中间变量int a = 10 ;int b = 20 ;System.out.println("a:"+a) ;System.out.println("b:"+b) ;System.out.println("-------------------------------------");//定义中间变量 (开发中,使用中间变量的方式)/*int temp = a ; a = b ; b = temp ;*///方式2:位异或的特点:一个数据被另一个数据位异或两次,其值是它本身//左边:a,b,a//右边:a^ba = a ^ b ;  //在a变量进行 赋值为 a^bb = a ^ b  ; // a ^ b  ^b ;a = a ^ b ;  //a ^ b ^a ;System.out.println("a:"+a) ;System.out.println("b:"+b) ;}}

键盘录入数据的操作步骤

/*为了进行数据逻辑判断操作的时候,程序更灵活一些Jdk提供了类供我们使用----->文本扫描器   java.util.Scanner类
在Java中,只要我们用的其他类,只要不是java.lang.xxx类都需要导包java.lang.Stringjava.lang.Integerjava.lang.Math.....使用步骤:1)导包  :位置是在class的上面 import java.util.Scanner ;  //用谁导谁2)创建文本扫描器    ----java中的关键字 new  创建对象(具体在面向对象中讲)Scanenr 变量名(称为"键盘录入对象名") = new Scanner(System.in) ;  固定格式 变量名 ,自己起名字3)友情提示 "请输入一个数据:"4)通过文本扫描器录入数据  (整数默认int)        使用2)的变量名int  结果变量名=    变量名.nextInt() ; //.nextInt() :调用文本扫描器的提供功能,录入int类型5)使用这个结果变量名来进行操作昨天的题:键盘录入两个数据,比较是否相等键盘录入三个数据,比较三个数据最大值
*///1)导包
import java.util.Scanner ;
class ScannerDemo{public static void main(String[] args){//2)创建文本扫描器(创建Scanner类对象) 固定写法,变量名自己起Scanner sc = new Scanner(System.in) ;//3)友情提示System.out.println("请您输入一个数据(int):") ;//4)录入int类型数据int result = sc.nextInt() ;  //.nextInt() :调用文本扫描器的提供功能 (固定写法)//5)输出或者使用//使用这个结果变量完成其他逻辑操作System.out.println("录入的数据是:"+result);}
}

心得体会

经过本周的学习,我了解到了,如何使用Notepad++,cmd编译文件和运行class字节码文件,现在会编写一些简单好玩的Java程序,感觉到java的学习要细心,小小的一处不注意就有可能出现bug,而且,我觉得按时完成每天的作业可以巩固当天所学的知识,并且每天都要预习之后的课程这样,在第二天的学习中就会发现一些更深入的问题,所以要把这个习惯坚持下去!!!!!

第二周总结(2022.10.24~2022.10.28)相关推荐

  1. 2022.4.30—2022.6.22 学习报告

    目录 2022.4.30 2022.5.2 数据流图(Dataflow Graph) Sesssion 构建计算图 2022.5.3 Deep Label Distribution Learning ...

  2. 第三周总结(2022.10.31~2022.11.4)

    目录 Day1 1.if...else...和三元运算符的区别? 2.if...else...嵌套 3.流程控制语句之switch(考点很多) 3.1什么是switch语句? 3.2switch语句中 ...

  3. CGT Asia 2022第二届亚洲细胞与基因治疗创新峰会将于2022年7月10日-111日在上海举办

    2021年6月,中国正式迎来首款获批上市的CAR-T细胞治疗产品,标志着中国进入细胞和基因疗法的元年,以CAR-T为代表的细胞基因治疗时代已然开启.当下,细胞与基因治疗临床管线数目逐年上升,将迎来商业 ...

  4. 联翔股份——2022年5月10日申购

    2022年5月10日 申购: 联翔股份.骏创科技 上市: 中银转债 中签/缴款: 中科江南.普蕊斯.中环转2 新股申购:[主]联翔股份(603272) 保荐机构(主承销商):中信建投证券股份有限公司 ...

  5. 5月第二周全球五大顶级域名总量新增10.5万个

    据域名统计机构WebHosting.info公布的最新数据显示,截至2012年5月14日,全球五大顶级域名 (.COM..NET..ORG..INFO和BIZ)的总量达131,016,111个,环比上 ...

  6. 3934:C 10 Aug 2022 00:14:04.239 # Fatal error, can‘t open config file ‘/usr/local/redis/./redis-conf

    报错:3934:C 10 Aug 2022 00:14:04.239 # Fatal error, can't open config file '/usr/local/redis/./redis-c ...

  7. C语言编程>第二周 ⑥ 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

    例题:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 代码如下: /*程序分析:利用for循环语句求解*/ #include& ...

  8. 李骐老师2022年7月10日郑州讲授《项目管理与领导力培训》

    李骐老师2022年7月10日郑州讲授<项目管理与领导力培训>企业培训内训课程 李骐老师/实战项目管理专家 李李骐老师美国PMI/PMP项目管理认证.美国 ACI 沙盘认证讲师 清华大学项目 ...

  9. 10/15/2022

    好题 a b c d 10/16/2022 Educational Codeforces Round 137 (Rated for Div. 2) Password Permutation Value ...

最新文章

  1. 从0到1:千万级美团端侧CDN容灾解决方案
  2. 软件测试报告重点审核点有哪些,软件测试-测试报告.doc
  3. AspectJ的实现机制
  4. FioriLaunchpad.html的三个round-trip
  5. 如果年轻,就出发吧!
  6. 用友通ERP客户端报无法登陆错
  7. c++静态成员函数为什么不能为虚函数?
  8. 寒武纪与华为海思分庭抗礼:中立芯片公司的成人礼
  9. 中心/设置地图缩放以覆盖所有可见的标记?
  10. 动态注册广播接收者,屏幕锁定Android
  11. 前端开发关于字体侵权问题
  12. LAMP环境的搭建与部署
  13. 【ThreadPoolTaskExecutor】 SpringBoot 的线程池的使用
  14. robot_localization中EKF源码介绍
  15. matlab mann-kendall,基于Matlab的Mann-Kendall突变检验及高分辨率图形输出
  16. 轻松学习JavaScript二十二:DOM编程学习之节点操作
  17. 做PPT绝对不能错过这5个网站
  18. Digital.Canal.JobTracker.v4.10.227.4 1CD
  19. 太空战机c语言实验报告,c语言课程设计_太空战机提高篇.doc
  20. 目标检测:4.MR-CNN

热门文章

  1. WAMP环境搭建(转)
  2. MTBF是什么意思?交换机做MTBF有什么要求?MTTF、MTBF和MTTR的区别是什么?
  3. 第二阶段 筑基期(4-6 周,每周 8-10 小时) -2
  4. Java修炼之凡界篇 筑基期 第03卷 流程控制 第02话 顺序结构
  5. python:疫情数据可视化
  6. 使用AVPlayer播放视频
  7. 商业图表案例10.2-重庆的日照
  8. 高冷一字id_一个字的网名 高冷一字id
  9. selenium等动态爬取北京市公共自行车网站
  10. 【转载】我们怎么理解导数?