admin管理员组文章数量:1516870
周总结
目录
- 周总结
- 计算机概念
- 计算机硬件和软件
- 人机交互在windows上一些常用指令
- Java语言发展历史
- Java语言特点
- jdk安装目录的文件夹以及文件的介绍
- classpath(了解)
- Java系统环境的配置path(重点)
- Path环境变量的执行流程
- 文件名
- JRE,JDK,JVM概念
- 什么是关键字合字符?
- 标识符的组成规则有哪些?
- Java中的注释分为哪些,有什么作用
- Java数据类型的划分
- 进制相关
- 什么是常量?常量的分类
- 变量
- 什么隐式转换?
- 什么是显示转换(强转)
- 算术运算符:
- 基本的赋值运算符:=
- 关系(比较)运算符(最简单一种运算符)
- 逻辑运算符号(开发中经常用到)
- 三元运算符的格式以及执行流程
- 键盘录入的操作步骤
- 3.流程控制语句
- 了解
- 待续
周总结
计算机概念
是一种能够按照程序运行,自动,高速处理海量数据的现代化智能电子设备。俗称"电脑",没有任何软件的计算机 "裸机"!计算机的分类:台式计算机,笔记本,大型计算机(公司的机房)计算机的用途1)科学计算 2)多媒体应用3)计算机辅助设计 ----CAD工程制图4)人工智能5)计算机网络
计算机硬件和软件
硬件:机械,光电元件的物理装置的总称: cpu,电源,主机箱,显卡,键盘,鼠标,主板,显示器....软件:系统软件:pc端: Windows,Linux,Mac移动端:android,ios应用软件:计算机安装的客户端软件:QQ客户端微信yy语音软件结构划分C/S结构Client/Server:客户端和服务器端的交互典型特点:客户端必须升级,才能使用 服务器高版本的功能: 比如QQ一阶段:网络编程 TCP/IP 建立客户端和服务器通道!(Socket) B/S结构Browser/Server:浏览器端和服务器端的交互 二阶段一直到四阶段 以后研究B/S结构典型的特点:只要保证计算机上有浏览器,那么就可以访问服务器高版本功能!(浏览器本地可以不升级)程序员专用浏览器 "firefox 火狐" /谷歌浏览器软件开发就是借助开发工具与计算机语言完成软件的制作过程(制作过程中,需要有计算机语言相关的数据和指令!)开发工具:前两周---使用notepadd++ 高级记事本(写任何计算机语言代码的会有颜色标记),写代码使用dos控制台进行编译和运行(javac/java指令) 第三周开始:就会使用 idea2021 (自动编译/很智能化) 二阶段:前端开发工具:HBuilderX或者vscode/webStorm(idea同一个公司的)人机交互 xxxxxxxxxx 人和计算机之间沟通一种方式:1)图形界面化:无论任何操作系统,都会有图形界面化(简单,直观,易于上手)2)命令行方式:需要控制台 (Linux系统,Linux控制台终端输入一些命令) windows系统:打开dos控制台,里面输入一些指令windows系统打开dos控制台的方式: 1)开始菜单输入cmd---->命令行提示符---->以管理员身份打开 2)推荐方式: windows+r键--->输入"cmd"--->打开控制台
人机交互在windows上一些常用指令
1)盘符切换 盘符号后面:(盘符号不区分大小写)C:\Users\Administrator>D:D:\>2)dir罗列当前盘符或者指定文件夹中所有的文件以及文件的名称(详细信息) 3)当dos窗口内容比较多,清屏命令 cls (clear screen:清除屏幕)D:\>cls4)cd 目录名称(文件夹名称) :进入指定的目录中 cd(change Directory)D:\>cd ee_2302D:\EE_2302>5)cd.. 回退上一级目录D:\EE_2302\day2>cd..D:\EE_2302>6)cd 多级目录名称:进入指定路径的文件夹中D:\>cd D:\EE_2302\day2\codeD:\EE_2302\day2\code>7)cd \ 从多级目录中回退到根目录D:\EE_2302\day2\code>cd \D:\>8)md 目录名称(文件夹名称):创建文件夹 md(make directory)D:\EE_2302\day2\code>md aaaD:\EE_2302\day2\code>9)创建文件 copy con 文件名称 --->按回车--->进入编辑模式(编辑文件内容)---->按 ctrl+z:保存--->按回车--->创建完成D:\EE_2302\day2\code\aaa>copy con aaa.txt这是一个txt文件^Z已复制 1 个文件。D:\EE_2302\day2\code\aaa>10)删除指定的文件 del 文件名称 D:\EE_2302\day2\code\aaa>del a.javaD:\EE_2302\day2\code\aaa>11)批量删除所有的指定后缀的文件 del *.xxD:\EE_2302\day2\code\aaa>del *.txt 批量删除所有带.txt后缀的文件D:\EE_2302\day2\code\aaa>12)删除目录(文件夹) rd 目录名称 (前提条件:这个目录必须为空目录,否则系统提示"目录不是空的")D:\EE_2302\day2\code>rd aaa目录不是空的。D:\EE_2302\day2\code>传统删除带内容的目录:需要先进入到指定目录中,删除里面的内容;然后回退上一级目录,删除当前文件夹!13)rd扩展指令: rd /s 目录名称(询问是否删除带内容目录)D:\EE_2302\day2\code>rd /s aaaaaa, 是否确认(Y/N)? yD:\EE_2302\day2\code>14)rd扩展指令 rd /s /q 目录名称(暴力删除,不询问直接干掉) D:\EE_2302\day2\code>rd /s /q 高圆圆D:\EE_2302\day2\code>
Java语言发展历史
詹姆斯~高斯林 :Java之父 1995年正式推出"Java" "爪哇"Jdk版本:目前使用的8版本/9版本 自己新特性Java应用领域:比较广泛 360行几乎全部涵盖进去1)电商平台2)医院挂号系统3)收银系统4)健康码5)比亚迪----MES系统 (传统行业)6)物流系统7)元宇宙畜牧业系统(涉及云端)Java平台版本(重点)JAVASE:桌面应用程序 (一阶段)学习java语法/运算符/流程语句/面向对象的基础/高级特性(集合,io流,多线程,网络编程,反射,jdk新特性....) Java认知JAVAME:针对嵌入式设备提供一套解决方案 (移动端用到的 早期塞班系统,安卓系统) "看平台"JAVAEE:针对企业级开发提供一套解决方案 (以后的方向)二阶段去学习企业级开发的核心技术Servlet(开源的原生框架 Server Applet:针对服务端程序开发(java服务连接器))servlet+jsp+jdbc三阶段:Spring SpringMVCMybatisSpringboot+vue 前后端分离四阶段:JavaEE分布式 SpringCloud
Java语言特点
很多特点 :安全性,健壮性,分布式....(学习到后期体会)比较容易理解:开源----->开发源代码---涉及的Java设计模式/数据结构/算法...跨平台---->跨操作系统(不同的操作系统上都可以编译和执行 java文件)
jdk安装目录的文件夹以及文件的介绍
classpath(了解)
临时环境变量 此电脑--->右键属性---->高级系统设置---->环境变量----->系统变量 新建一个变量名:classpath变量值:要指定的那个class文件(字节码)的路径配置完毕之后,在java 字节码文件前缀的时候---运行这个类的时候,始终是在classpath临时环境变量去执行对应.cass文件,如果这个路径中没有class字节码文件,提示"找不到主类"!
Java系统环境的配置path(重点)
配置path的目的:是为了在任何目录都能使用javac和java指令为什么要配置系统环境变量?
如果不配置系统环境变量,永远只能在jdk安装目录中bin目录里面去使用javac和java指令,对java编译和运行!配置是为了让我们在任何目录中都能够使用javac和java指令!
两种方式:选一种即可配置方式1 1)复制jdk安装目录的bin目录的路径 举例:D:\develop_software\Java\jdK_8\bin2)此电脑--->右键属性---->高级系统设置---->环境变量----->系统环境---->找到path将上面路径复制到path中(放在最前面)3)退出dos窗口,重写打开新的dos窗口,在任何目录中进行编译和运行!方式1配置的弊端 1)不安全,当jdk版本切换,需要手动更改系统变量中path,可能会导致别的环境变量被误删!2)这种方式后期 学习"web应用服务器" tomcat(用java编写的),启动会闪屏(启动失败),tomcat服务器启动的时候会寻找系统变量是否有"JAVA_HOME"的变量,如 果存在,tomcat启动不会闪屏!配置方式2(推荐方式)1)复制jdk安装路径(不需要bin目录的路径)举例:D:\develop_software\Java\jdK_82)此电脑--->右键属性---->高级系统设置---->环境变量----->系统环境---->新建一个变量名变量名 JAVA_HOME变量值 上的jdk的安装路径3)在path中的路径上使用 %JAVA_HOME%\bin 优点:\1)安全,即使jdk升级,不需要改动系统变量中path路径,只需要更改JAVA_HOME对应的路径2)后期使用tomcat web服务器的时候,不会出现闪屏!
Path环境变量的执行流程
1)先要去在指定目录中(文件夹)找是否存在这个 xxx.java文件,如果存在这个文件就直接编译然后运行字节码的前缀2)如果当前指定的目录中(文件夹)如果不存在xxx.java文件,那么就需要在系统变量path中 %JAVAH_H0ME%\bin这个路径去寻找是否存在,如果存在,就编译,如果也不存在,那么说明系统中不存在这个文件 "找不到文件!"
文件名
如果是public class 类名{
}//主类?
这个类名必须和文件名一致如果是 class 类名
则可以和文件名不一致
JRE,JDK,JVM概念
JRE:
Java Runtime Environment Java运行环境,包含jvm以及java文件运行所需要的核心类库 (lib--rt.jar)JDK:
Java Development Kit :Java软件开发工具包,包含jre以及工具文件(toos.jar)JVM:
Java Virtual Machine :Java虚拟机, 抽象化的计算机(在实际计算机上模拟各种功能)JVM有自己的内存模型结构:栈(本地方法栈,操作数栈...) ,堆,方法区,pc寄存器(程序计数器) 等等Java文件需要运行在操作系统上,而操作系统需要有Java运行环境里面需要jvm来编译并且解析Java文件中的内容!java指令:负责解析java文件编译后的.class文件
什么是关键字合字符?
什么是关键字?关键字:被赋予特定含义的单词!在高级记事本notepad++或者editPlus,以及开发工具idea针对关键字都有一种特殊颜色标记!class:Java语言中定义类的格式! (面向对象部分去讲)public:权限修饰符号 (公开的/公共的,任何人都可以访问的,访问权限足够大)static:静态修饰符号(在面向对象部分去讲)void:和Java语言中定义方法(函数)一种格式 (方法的时候讲!)注意事项:1)组成关键字的字母全部都是小写,而且特殊含义的!2)goto 和const不作为关键字,保留字使用!
class KeyWord{public static void main(String[] args){System.out.println("被Java语言赋予特定含义的单词!") ;}
}
标识符的组成规则有哪些?
标识符:给包,类(接口:面向对象中讲),方法(变量),常量等起名字一种"字符序列"起名字------>做到"见名知意"
组成规则:1)可以是英文大小写字母2)可以是数字3)可以_下划线4)可以是$符号注意事项:1)不能以数字开头2)非法字符不能出现,_和$在开头的3)Java严格区分大小写(虽然起名字可以使用大写关键字 int Public = 100;不推荐)标识符命名规范1)给类名(或者接口名)起名字: 遵循格式 "大驼峰命名法" ("阿里规范")类名是单个单词: 首字母大写,其余小写!举例:定义一个学生类class Student{} class S{} 不规范类名是多个单词: 每个单词首字母大写,其余小写 举例:定义有一个"玩游戏"的类class PlayGameDemo{}2)给变量(和方法就是函数)起名字:遵循"小驼峰命名法";变量名是一个单词:字母全部小写举例:定义一个价格(默认int 整数)int price = 100 ;变量名是多个单词:第一个单词字母全部小写,从第二个单词开始每一个单词首字母大写.其余小写 举例:定义一个苹果价格int applePrice = 100 ;3)给常量(程序执行过程中,其值是固定的),起名字的时候:常量是一个单词(开发中很少见):字母全部大写举例: 字符串常量 :双引号括起来的内容 "HELLO"常量是多个单词(开发中经常见到):每个单词字母都大写,单词和单词之间下划线隔开举例:jdk提供了一个类 "Thread 线程类"提供线程优先级的常量自定义常量:public static final int MIN_PRIORITY = 1;前面省略修饰符int NORM_PRIORITY = 5; 默认优先级前面省略修饰符int MAX_PRIORITY = 10; 最大优先级
Java中的注释分为哪些,有什么作用
//单行注释/*多行注释
*//**文档注释 --在面向对象中讲 (在jdk的bin目录里面有一个指令javadoc.exe 可以解析文档注释的)@author:作者名称@version:版本号
*/注释: 解释代码的文字说明 (必须习惯写,适当的针对关键性代码添加一些注释)分类:单行注释/多行注释-- 普通注释文档注释作用:1)提高代码阅读性2)可以排错(仅仅是在高级记事本 写的java代码,自己手动编译!)
//java中定义一个类 固定语法格式 : class 类名{}
class CommonsDemo{/*main函数的固定写法 public static void main(String[] args){}它是能够jvm进行调用的,是所有java程序的入口!*/public static void main(String[] args){//输出语句的固定写法:输出不同的"字符串"(双引号括起来的)内容System.out.println("helloworld") ;System.out.println("高圆圆") ;System.out.println("JavaEE") ;System.out.println("王宝强") ;}}
Java数据类型的划分
两大类:基本数据类型:四类八种整数类型:字节类型 byte -128-127 1个字节短整型 short 2个字节默认int类型 4个字节长整型 long 8个字节 //注意赋值时数据末尾添加L/l浮动类型:单精度 float 4个字节 //注意赋值时数据末尾添加F/f双精度:double(默认的) 8个字节字符类型:char 2个字节布尔类型boolean 1个字节引用数据类型:(以后研究类型:引用类型)数组,类,接口(面向对象中)基本类型使用居多:整数以及浮点/布尔boolean整数类型:使用居多int类型,long(定义时间毫秒值)浮点类型: double使用居多(市场价等等都会double)布尔类型: 在一个具体业务场景的时候,大量会使用逻辑语句,需要用boolean
进制相关
01_进制的由来以及概念组成规则
02_任意进制转换十进制
03_十进制转换成任意进制
04_8421码
05_定义变量的三要素
06_扩展_有符号位的数据表示法_以及两个变量相加的隐式类型提升
07_强转类型转换的语法格式
练习
什么是常量?常量的分类
什么是常量?
在程序过程中,其值不发生改变的量!(固定值)
分类:1)字面值常量A)字符串常量: 使用双引号括起来的内容都是字符串举例: "高圆圆","helloworld"....字符串+任何数据 = "新的字符串" ; 中间"+",拼接符号或者任意数据+"字符串"="新的字符串";B)字符常量: 使用单引号括起来的单个内容举例:'a','A','0' 字符单独使用,就是代表字符本身 ,如果字符参与运算,它会寻找ASII码表中的对应的整数值计算(重点)'A'对应的值 65'a'对应的值 97'0'对应的值 48 (只有参与运算才去找个值)'AB'---错误的C)整数常量100,10,24...包含进制 进制:数据进位一种方式D)小数常量3.14,12.35E)布尔常量true或者false F)空常量 null ---属于"引用数据类型"的默认值 (面向对象中讲)举例:String:jdk提供的字符串类(字符串在java非常特殊的引用类型)String s = null ;String s = "高圆圆" ;2)自定义常量:面向对象中讲 java中一个关键字 final:状态修饰符(最终的,无法更改的)
class ConstantDemo{public static void main(String[] args){//字符串常量System.out.println("helloworld") ;System.out.println("高圆圆") ;System.out.println("--------------------------------") ;//字符常量//System.out.println('AB') ;//必须单个内容System.out.println('中') ;System.out.println('a') ;System.out.println('A') ;System.out.println('0') ;System.out.println('a'+1) ;//'a'参与运算对应的ASII码表的值 97System.out.println('A'+1) ; //'A'参与运算对应的ASII码表的值 65System.out.println('0'+1) ;//'0'参与运算对应的码表的值 48System.out.println("--------------------------------") ;//整数常量System.out.println(100) ;System.out.println(55) ;System.out.println("--------------------------------") ;//小数常量System.out.println(3.14) ;System.out.println("--------------------------------") ;//布尔常量System.out.println(true);System.out.println(false) ;System.out.println("--------------------------------"); //空常量//System.out.println(null) ;//报错的//定义一个字符串String abc = "高圆圆" ;System.out.println(abc) ;abc = null ;//重新赋值System.out.println(abc) ;}
}
进制
//打印出
//0B100对应的十进制
//0100(八进制)对应的十进制
//100:整数:默认就是十进制
//0x100(0x表示的十六进制) 对应的十进制//进制就是常量
class ConstantDemo2{public static void main(String args[]){System.out.println(0100) ;//八进制---64System.out.println(0b100) ;//二进制---4System.out.println(100) ;//十进制 默认十进制System.out.println(0x100) ;//十六进制---256}
}
变量
变量三要素:数据类型 变量名 =初始化值;数据类型 变量名;变量名 = 值;数据类型:基本数据类型:四类八种整数: byte 1个字节 -128~127short 2个字节int:默认 4个字节long 8个字节 ,定义的时候,初始化值后面必须加标记L或者l浮点: float:单精度 4个字节double:默认双进度 8个字节字符 char 占2个字节布尔 boolean 占1个字节引用数据类型:数组,类,接口(面向对象中讲)
/*什么是变量?变量:在程序的执行过程中,其值发生改变的量!定义变量的三要素:1)数据类型2)变量名:满足标识符的规则 "小驼峰命名法"3)初始化值数据类型:(重点)1)基本数据类型:四类八种整数类型: 如果题意中没有明确要求数据类型,默认都是intbyte 字节类型 占1个字节 范围:-128~127(考点)short 短整型 占2个字节int 整数类型 占4个字节long 长整型 占8个字节整数默认int,在定义long类型,在初始化值的后面加上标记 L或者l(推荐L)浮点类型 默认类型是doublefloat 单精度类型 占4个字节float后面的值必须加标记F或者fdouble 双精度类型 占8个字节字符类型char 使用单引号括起来的字符 占2个字节布尔类型boolean 表示true或者false ,不会参与运算!(开发中表示逻辑:真或者假)2)引用数据类型 :下周讲数组,类,接口*/
class DataTypeDemo{public static void main(String[] args){//定义一个byte类型变量byte b = 100 ;b = 120 ;System.out.println("b:"+b) ; // "b:120"System.out.println("-------------------------") ;//短整型shortshort s = 120 ;s = 150 ;System.out.println("s:"+s) ;System.out.println("-------------------------") ;//int类型int i = 10000 ;System.out.println("i:"+i) ;System.out.println("-------------------------") ;//int ii = 100000000000000;//过大的整数,int类型不能接收,使用长整型long//整数默认int,在定义long类型,在初始化值的后面加上标记 L或者l(推荐L)long ii = 100000000000000L;System.out.println("ii:"+ii) ;System.out.println("-------------------------") ;//浮点类型://float/double:默认doubledouble d = 12.56 ;d = 12.34 ;System.out.println("d:"+d) ;System.out.println("-------------------------") ;//float f = 3.14 ;//DataTypeDemo.java:67: 错误: 不兼容的类型: 从double转换到float可能会有损失//浮动类型默认double,所以float后面的值必须加标记F或者ffloat f =3.14f;//定义就是单精度类型System.out.println("f:"+f) ;System.out.println("-------------------------") ;//字符charchar ch = '我' ;char ch2 = 'a' ;ch2 = 'A' ;System.out.println("ch:"+ch) ;System.out.println("ch2:"+ch2) ;System.out.println("-------------------------") ;//布尔类型 booleanboolean flag = true ; //后端语言使用逻辑语句进行处理: //登录:必须满足用户名和密码都和数据库中一致,才能登录!flag = false ;System.out.println("flag:"+flag) ;}
}
定义变量的注意事项:1)Java语言是一个"强类型"语言,它的语法结构非常严谨,不能重复定义变量而前端语言:javascript:弱类型语言,是可以重复定义变量;2)java语言中的所有语句结束了就必须带";"分号 3)定义变量代码书写格式:(代码风格)建议:一行一个变量,不要所有变量都写在一行上4)定义变量,但是在使用之前没有初始化,就会报错,系统认为这个变量没值!(仅仅适用于局部变量)局部变量:在方法(函数)中定义的变量,都是局部变量,必须使用之前给值!
class DataTypeDemo2{public static void main(String[] args){//定义一个int类型的变量int x = 100 ;//int x = 200 ;//重复定义变量(已在方法 main(String[])中定义了变量 x)x = 50 ;//这样可以,重新赋值System.out.println("x的值是:"+x) ;System.out.println("--------------------------") ;//int m = 10 ;//需要分号才能结束//int a = 10 ; int b = 20 ; int c = 30 ;(代码不规范)//同时定义三个变量(分行定义)//int a = 10 ;//int b = 20 ; //int c = 30 ; //一行同时定义多个变量int m, n= 100,z = 50 ; //(笔试题中)System.out.println("m:"+m) ;// 可能尚未初始化变量m,在使用之前必须给初始化值m = 10 ;System.out.println("m:"+m) ;//定义后,使用之前给值,就可以用!System.out.println("n:"+n) ;System.out.println("z:"+z) ;}
}
什么隐式转换?
Java语言中,变量相加,必须保证数据类型一致才能进行运算!Java的一种隐式转换(默认类型提升) (重点)
针对byte,short,char三者之间 不转换,一旦自己参与运算的时候,
优先提升为int(考点)--->long--->float--->doubleboolean类型不会参与任何转换!
/*需求:int a = 3 ; byte b = 4 ;变量和变量b求和的结果是什么?结果的数据类型是什么?*/
class DataTypeDemo3{public static void main(String[] args){//定义两个变量int a = 3 ; byte b = 4 ;//System.out.println(3+4) ;//如果此时接收a+b的结果类型如果是int类型int result = a + b ; //a + b---->提升int类型才能进行计算!System.out.println("result:"+result) ;}
}
什么是显示转换(强转)
Java强转类型转换("强转")(显示转换):目的将大的数据类型转换成小的数据类型语法格式:这个格式不仅仅适用于基本类型,也适用于引用数据类型!目标数据类型 变量名 = (目标数据类型)(初始化值);举例:byte result = a + b ; // 优化为byte result= (byte)(a+b);
class DataTypeDemo4{public static void main(String[] args){//定义两个变量int a = 3 ;byte b = 4 ;//两个变量进行相加//接收结果变量是byte类型//byte result = a + b ;//DataTypeDemo4.java:14: 错误: 不兼容的类型: 从int转换到byte可能会有损失//上面出现错误的原因://等号右边: a+b--->byte类型的b参与运算,优先提升为int,相加后的结果int类型的7//等号左边:字节类型 byte:占1个字节,不能接收4个字节的结果//必须使用强转类型转换才能接收//目标数据类型 变量名 = (目标数据类型)初始化值;byte result = (byte)(a+b);System.out.println("result:"+result) ;}
}
算术运算符:
基本算术运算符: +,-,*,/,%注意:/:默认取整 (java是强类型语言,弱类型javascript前端语言不会默认取整)%:模:求余数//小数计算 - 或者/ 计算机计算的时候,"伪计算"//jdk提供一个类(后面讲这个常用类:BigDecimal 会对小数进行精确计算!)扩展的算术运算符:++和-- (使用比较多的) ++和—单独使用和参与运算使用发区别单独使用:无论在数据的前面还是后面,都是对当前这个变量自增1或者自减1参与运算使用:在数据的前面,先自增或者自减1,然后参与运算在数据的后面,先运算,然后在自己自增或者自减1
基本的赋值运算符:=
将=号右边的值赋值给左边指定类型的变量
//举例:int x = 10 ;// 将10赋值给int类型的变量x
注意:=不能写成==,==不能写成= (==是比较运算符)扩展的赋值运算符+=,-=,*=,/=,%= :将等号右边的数据和左边的变量值操作,在赋值给左边的变量
//举例:int x = 10 ;x += 20 ;-//---->等价于 x = x + 20 ;(前提条件:类型相同)//将=等号左边的变量和右边的值相加在赋值给左边的变量x
扩展的赋值运算赋的特点特点:隐藏了强转类型转换
short = 23 ;s += 12 ; 不会编译报错----等价于 s = (short)(s+12) ;short = 23 ;//s = s +12 ; //会编译报错: s+12 --->s优先提升int,结果还是int,short无法接收,必须强转!
关系(比较)运算符(最简单一种运算符)
<,>,<=,>=,==,!=
这些符号连接的表达式无论简单还是复杂的结果都是boolean值!==:在基本数据类型中,比较两个数据值是否相等注意事项:==不能写成 "="
数学表达式3<=x<=5, //错误,计算机语言中:必须使用逻辑符号连接!//例:(x >= 3 && x <= 5)
class OperatorDemo{public static void main(String[] args){//定义三个变量int a = 3 ;int b = 4 ;int c = 5 ;System.out.println(a > b) ;System.out.println(a<=b) ;System.out.println(a <= c) ;System.out.println(a >c) ;System.out.println(a==c) ;System.out.println(a!=b) ;System.out.println("-------------------------------") ;int x = 100 ;int y = 200 ;//定义变量接收x和y比较的结果//boolean flag = x= y ; 将y的值给x,将x值留下来赋值给flag,boolean不参与运算!boolean flag = (x==y) ;System.out.println(flag) ;}
}
逻辑运算符号(开发中经常用到)
基本的逻辑运算符号:逻辑与&:具有并列条件,所有的条件必须同时满足才能成立!特点:有false则false (有一个不满足就不成立!)&符号连接的左边表达式如果是false,右边依然要执行,效率低!逻辑或|: 或的关系,只要满足一个条件即可成立特点:有true,则true|符号连接的左边表达式如果是true,右边依然要执行,效率低!逻辑异或^特点:相同则为false,不同则为true简单记 男女关系"男男" "女女" false "女男" "男女" true逻辑非! 特点:非true,则false非false,则true偶数个非是它本身!
class OperatorDemo{public static void main(String[] args){//定义三个变量int x = 3 ;int y = 4 ;int z = 5 ;//逻辑与&System.out.println((x > y) & (x > z)) ; //false & falseSystem.out.println((x > y) & (x < z)) ; //false & trueSystem.out.println((x < y) & (x > z)) ; //true & falseSystem.out.println((x < y) & (x < z)) ; //true & trueSystem.out.println("---------------------------------") ;//逻辑或|System.out.println((x > y) | (x > z)) ; //false | falseSystem.out.println((x > y) | (x < z)) ; //false | trueSystem.out.println((x < y) | (x > z)) ; //true | falseSystem.out.println((x < y) | (x < z)) ; //true | trueSystem.out.println("---------------------------------") ;//逻辑异或^System.out.println((x > y) ^ (x > z)) ; //false ^ falseSystem.out.println((x > y) ^ (x < z)) ; //false ^ trueSystem.out.println((x < y) ^ (x > z)) ; //true ^ falseSystem.out.println((x < y) ^ (x < z)) ; //true ^ trueSystem.out.println("---------------------------------") ;//逻辑非!System.out.println(!(x>y)) ;System.out.println(!!(x>y)) ;System.out.println("---------------------------------") ;//对于逻辑单与& int a = 3 ; //a=4int b = 2 ; // b=1//false & true System.out.println(((++a) == 3) & ((b--)==2)) ;//a,b值多少,以及 上面输出结果是多少System.out.println("a:"+a) ;System.out.println("b:"+b) ;System.out.println("-------------------------") ;//逻辑单或|int m = 3 ; //m=4int n = 2 ; //n=1//true | falseSystem.out.println(((m++) == 3) | ((--n)==2)) ;//m,n值多少,以及 上面输出结果是多少System.out.println("m:"+m) ;System.out.println("n:"+n) ;}
}
逻辑双与&&和逻辑单与&有什么区别?共同点:有false,则false(并列条件,必须同时满足条件才成立!)区别:逻辑单与&:连接的表达式左边如果是false,右边依然要执行而逻辑双与&& ,连接的表达式如果左边是false,则右边不执行(具有短路效果)开发中:并列条件:逻辑双与&&代替逻辑单与&,因为效率高!或的条件:优先采用是逻辑双||代替逻辑单或|,效率高!逻辑双与||:左边为true(有true,则true),右边不执行,具有短路效果!
class OperatorDemo2{public static void main(String[] args){//逻辑双与&&//定义三个变量int x = 3 ;int y = 4 ;int z = 5 ;//逻辑双与&&:有false则falseSystem.out.println((x > y) && (x > z)) ; //false && falseSystem.out.println((x > y) && (x < z)) ; //false && trueSystem.out.println((x < y) && (x > z)) ; //true && falseSystem.out.println((x < y) && (x < z)) ; //true && trueSystem.out.println("--------------------------------") ;//定义变量mint m = 4 ; //m=5int n = 3 ;System.out.println("m:"+m) ; //m:4System.out.println("n:"+n) ; //n:3System.out.println("--------------------------------") ;//false && trueboolean flag = (((++m) ==3) || ((n--) == 3) ) ;System.out.println(flag) ;System.out.println("m:"+m) ;System.out.println("n:"+n) ;System.out.println("--------------------------------") ;//逻辑双或||//左边为true(有true,则true),右边不执行,具有短路效果!int a = 10 ;a ++ ;int b = 11 ; //true || false // b=12System.out.println((a==b) || ((b++)==12)) ;System.out.println("a:"+a+",b:"+b) ;}
}
三元运算符的格式以及执行流程
三元运算符(三目运算符)还有二目:一个表达式两个变量 x==y三元运算符的格式:(表达式)? 执行true的结果:执行false的结果; (后期在jdk源码中会见到)执行流程:1)表达式可以简单可以复杂,结果是boolean,判断表达式是否成立如果成立,则执行true的结果2)否则不成立,则执行false的结果;
class OperatorDemo{public static void main(String[] args){//定义两个变量int a = 10 ;int b = 12 ;//求两个变量的最大值(没有明确要求数据类型默认int)//(表达式)? 执行true的结果:执行false的结果;//定义一个变量maxint max = (a>b)?a:b; //符号:都是英文的System.out.println("两个变量中的最大值是:"+max);System.out.println("--------------------------------");//求最小值int min = (a<b)?a:b;System.out.println("两个变量中的最小值是:"+min);System.out.println("--------------------------------");//比较a和b的值是否相等 true/false//方式1:boolean flag = (a==b)? true:false ;System.out.println(flag) ;//方式2:boolean flag = (a==b);//需求:自定义三个变量,x,y,z(默认int),比较三个数据中的最大值;int x = 10 ;int y = 30 ;int z = 20 ;//三元运算符实现?//方式1:分步实现//1)将x和y先进行比较,使用一个中间变量记录x和y最大值//2)使用这个临时变量记录的最大值在和z比较//(表达式)? 执行true的结果:执行false的结果;//定义一个变量(中间变量)int temp = (x>y)?x:y;//定义结果变量max2int max2 = (temp>z)? temp : z ;System.out.println("三个数据中的最大值是:"+max2) ;System.out.println("-----------------------------------------") ;//三元运算符的嵌套方式(不推荐)int max3 = (x>y)?((x>z)?x:z):((y>z)?y:z) ;System.out.println("三个数据中的最大值是:"+max3) ;}
}
键盘录入的操作步骤
键盘录入是jdk提供的一个类 java.util.Scanner类 (文本扫描器,让桌面应用程序更灵活)为什么要使用键盘录入数据呢?如果直接去定义变量,直接写死了,程序不灵活,jdk提供给我们 "文本扫描器"可以键盘录入数据,让程序灵活一些 键盘录入数据的操作步骤:1)在class类的上面书写 导包的格式固定格式: import java.util.Scanner;(在Java中只要不是java.lang包下的都需要导包)2)在main方法中,创建文本扫描器 :格式Scanner 文本扫描器变量名 = new Scanner(System.in) ; 固定格式3)提示并录入数据(没有提示类型,默认录入int)System.out.println("请输入一个数据:") ;int 结果变量= 文本扫描器变量名.nextInt() ; nextInt():文本扫描器提供 录入int数据的方法4)使用结果变量;
//1)导包import java.util.Scanner ;
class Demo{public static void main(String[] arsg){//2)创建键盘录入对象(文本扫描器):固定格式Scanner sc = new Scanner(System.in) ;//3)提示并录入数据System.out.println("请输入一个数据:") ;int x = sc.nextInt() ;//录入下一个int类型//录入字符推荐nextLine ,还有一个是next,//俩者有区别 ,用xx.equals(),比较字符//4)使用x进行逻辑操作...}
}
3.流程控制语句
1)顺序结构语句:简单(代码从main进来之后,由上而下依次加载!)
2)选择结构语句两种格式1)if语句:(使用居多)//1.1)if(条件表达式){}1.2)if(条件表达式){...}else{...}1.3)if(条件表达式1){...}else if(表达式2){......}else{...}可以嵌套使用
import java.util.Scanner;
public class If{public static void main(String[] args){String userName = "高";//不知道为什么中文相同总是不能比较成功,可能是编码问题String passWord = "123456";//创建文本编辑器Scanner sc = new Scanner(System.in);System.out.println("请输入用户名");String yourName = sc.nextLine();System.out.println("请输入密码");String yourPwd = sc.nextLine();//判断用户名,密码是否正确if((yourName.equals(userName)) && (yourPwd.equals(passWord))){System.out.println("恭喜你,登陆成功");}else{System.out.println("对不起,你的用户名或者密码错误");}}
}
了解
扩展(了解概念)位运算符:它是针对数据直接进行运算的!基本的位运算符:位与&:有0,则0位或|:有1,则1位异或^:相同则为0,不同则为1反码~:所有的二进制位全部按位取反,0变1,1变0Java中计算机所以计算都是对补码进行计算
//举例
class OperatorDemo{public static void main(String[] args){System.out.println(3&4) ;System.out.println(3|4) ;System.out.println(3 ^ 4) ;System.out.println(~3) ; }
}/*3和4对应的原码00000000 00000000 00000000 00000011 3的原码,反码,补码00000000 00000000 00000000 00000100 4的原码,反码,补码位与&:有0,则000000000 00000000 00000000 00000011位与& 00000000 00000000 00000000 00000100----------------------------------------00000000 00000000 00000000 00000000结果是0位或:有1,则100000000 00000000 00000000 00000011
位或| 00000000 00000000 00000000 00000100-----------------------------------------------00000000 00000000 00000000 000001117位异或^:相同则为0,不同则为1 00000000 00000000 00000000 00000011
位异或^ 00000000 00000000 00000000 00000100----------------------------------------00000000 00000000 00000000 000001117~3 所有的二进制位全部按位取反,0变1,1变000000000 00000000 00000000 00000011
~---------------------------------------11111111 11111111 11111111 11111100 ----补码 最高符号位 数值位 1 1111111 11111111 11111111 11111100 补码- 1---------------------------------------------------------1 1111111 11111111 11111111 11111011 反码-----------------------------------------------------------1 0000000 00000000 00000000 00000100 原码 - 4
*/
位异或^特点一个数据被另一个数据位异或^两次,其值是它本身
class OperatorDemo3{public static void main(String[] args){int a = 10 ;int b = 20 ;System.out.pritnln( a ^ b ^ b) ; //输出a}
}
/*请实现两个变量数据交互(思考)
举例:int a = 10 ;int b = 20 ;最终结果:a = 20 b = 10 ;*/
class Test{public static void main(String[] args){//定义两个变量int a = 10 ;int b = 20 ;System.out.println("互换前:") ;System.out.println("a:"+a) ;System.out.println("b:"+b) ;System.out.println("--------------") ;//方式1:中间变量(开发中常用)int temp = a; // temp = 10 a = b ; // a = 20 ;b = temp ; // b =10 ;/*//方式2:位异或^特点:一个数据被另一个数据位异或两次,其值是它本身a = a ^ b ;b = a ^ b ; // a ^ b ^ ba = a ^ b ; // a ^ b ^ a
*/ System.out.println("互换后:") ;System.out.println("a:"+a) ;System.out.println("b:"+b) ;}
}
Java中计算机所以计算都是对补码进行计算面试题:(考点移位符号)请用有效的方式计算出2*8的结果 (2 * 2 ^ 移动次幂)位运算符里面的移位符号(扩展)<<(左移): 将"<<"左边的数据向左移动指定的位数(补码进行移动),将高位丢弃掉,空位补0结论:将"<<"左边的数据乘以2的移动次幂 >>(右移):将">>"左边的数据使用补码向右移动,如果最高符位是0,左边补0;如果最高符号位是1,左边补1;结论:将">>"左边的数据除以2的移动次幂>>>(无符号右移):将">>>"左边的数据使用补码向右移动,无论最高符号位是1还是0,永远左边空位补0;
class OperatorDemo2{public static void main(String[] args){System.out.println(3 << 2) ;//3左移2位 (12) 3*2^2 System.out.println(24 >> 2) ; //24 右移2位 24 /2^2 = 6System.out.println(-24 >> 2) ;//-6System.out.println(-24>>>2) ;}
}
待续
2)switch语句(考点比较多)switch的格式3)循环结构语句for:使用居多whiledo-while
本文标签: 周总结
版权声明:本文标题:周总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1687860630a150315.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论