什么是计算机?
- 广泛应用于科学计算、数据处理、自动控制、计算机辅助设计、人工智能、网络领域
- 由硬件和软件组成
二、计算机硬件
计算机硬件的组成:、内存,主板,IO设备、显卡
三、冯诺依曼体系结构
- 冯诺依曼
- 图灵
四、计算机软件
1. 系统软件:DOS、Linux、Windows、Android、iOS
2. 应用软件:WPS、QQ、微信、英雄联盟、绝地求生
五、计算机语言发展史
更易、更强
第一代语言
- 机器语言
第二代语言
- 汇编语言
- 指令取代二进制
- 解决人类无法理解机器语言的问题
- 目前应用
- 逆向工程
- 机器人
- 病毒
第三代语言
- 摩尔定律
- 当价格保持不变时,集成电路上可容纳的晶体管数量将每18个月翻一番,性能也将翻一番。换句话说,每美元购买的计算机性能将每18个月翻一番以上
- 高级语言
- 一般可分为,和 两个大类
- C语言是面向过程的典型语言。Java、C 面向对象的语言是典型的
- 各种编程语言
- :高级语言的鼻祖
- C 语言
- Java语言:服务器开发
- C#语言
- Python
- PHP
六、初识Java
Java帝国的诞生
C & C
- C语言于1972年诞生
- 靠近硬件,运行快,销量高
- 操作系统、编译器、数据库、网络系统
- 指针和内存管理
- 1982年C 诞生
- 面向对象
- 兼容C
- 图形领域、游戏等
Java出生
- Java 2 标准版(J2SE):去占领桌面
- Java 2 移动版(J2ME):去占领手机
- Java 2 企业版(J2EE):占用服务器
Java发展
- 他们基于Java开发了大量的平台系统和工具
- 构建工具:Ant,、Jekins
- 应用服务器:Tomcat,Jetty,Jboos,Websphere,weblogic
- Web开发:Struts,Sprig,myBatis
- 开发工具:Eclipse,IDEA
- 2006年:Hadoop(大数据领域)
- 2008年:Android(手机端)
java特性和优势
- 简单性
- 面向对象
- 可移植性
- 高性能
- 分布式
- 动态:反射机制
- 多线程:交互性和实时性
- 安全性
- 健壮性
七、Java的三大版本
- JavaSE 标准版:桌面程序
- JavaME 嵌入式开发:手机、小家电
- JavaEE 企业版:服务器,web端
八、JDK、JRE、JVM
- JDK:Java Development Kit Java包括开发人员工具JRE和JVM
- JRE:Java Runtime Environment Java包括运行环境JVM
- JVM:Java Virtual Machine Java虚拟机
JDK、JRE、JVM的详细介绍
九、Java建设开发环境
- JDK下载与安装
- 配置环境变量
- JDK目录介绍
- Helloworld简单的语法规则
- Notepad 安转和使用
JDK环境变量的安装和配置
十、java程序运行机制
- 编译:开发C或C或C等操作系统C
- 解释:在执行网页和服务器时,解释对速度的要求不高
理解:美国人如果看中国人写的书,第一种方式,可以翻译成一个英文版,第二种方式,可以找一个翻译官,一遍翻译一遍看。编译型相当于第一种方式,就是把这一本书直接翻译成英文,他会有一个负责翻译的程序,负责翻译的程序叫做编译器;解释型相当于第二种方式。
- 程序运行机制
十一、IDEA的安装
idea的安转步骤
什么是IDE?
IDEA就是一种IDE,被誉为最好的Java开发工具之一。
十二、Java基础语法
- 注释、标识符、关键字
- 数据类型
- 类型转换
- 变量、常量
- 运算符
- 包机制、JavaDoc
1、注释
-
Java有三种注释:
- 单行注释://///
- 多行注释:
- 文档注释:
public class HelloWorld { public static void main(String[] args) { ///单行注释:只能注释行文字 //输出一个hello System.out.println("hello"); /* 多行注释 我是多行注释,可以注释一段文字 */ /** * 文档注释,可以添加一些东西 * @Author 晁永政 */ } }
2、标识符
- 关键字
关键字详细介绍
- Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符的注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始,
- 首字母之后可以是字母(A-Z或者a-z),美元符($)、或者下划线(_)或者任何字符组合
- 标识符是 的
String 王者荣耀="百星王者";//没有错,这样写是正确的
3、数据类型
-
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
- 基本类型
- 引用类型:除了八大基本类型之外都是引用类型,如类、接口、数组
Java的八大数据类型
//整数扩展: 进制 二进制0b 十进制 八进制0 十六进制 0x 0~9 A~F
int i = 10;//十进制 1*10的一次方+0*10的0次方
int i2 = 010;//八进制 1*8的一次方+0*8的0次方
int i3 = 0x10;//十六进制 1*16的一次方+0*16的0次方
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("================================================");
//浮点数扩展 银行业务怎么表示?不能用float比较
// BigDecimal 数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好不使用浮点数进行比较
float f = 0.1f;//flout类型
double d = 1.0/10;//double类型
System.out.println(f);
System.out.println(d);
System.out.println(f==d);//false
float d1=231121316f;
float d2 = d1+1;
System.out.println(d1==d2);//true
输出结果:
4、什么是字节
- 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B(byte,字节)=8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号。
字节的介绍
5、类型转换
- 由于Java是强类型语言,所以要进行有些运算的时候需要用到类型转换
- byte,short,char—> int —>long —> float —>double(由低到高)
- 运算中,不同类型的数据先转换位同一类型,然后进行运算
- 强制类型转换:(类型) 变量名 高到底
- 自动类型转换:低到高
public class Demo05 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//因为byte最大位127,所以下面会出现内存溢出
System.out.println(i);
System.out.println(b);
double d = i;//自动转换
System.out.println(d);
System.out.println((int)23.7);
System.out.println((int)-45.1);
/** * 注意点: * 1.不能对布尔类型进行转换 * 2.不能把对象类型转换为不相干的类型 如把一个人转换成一头猪,但可以把一个男人转换成一个女人因为他们都是人 * 3.在高容量转换为低容量的时候 * 4.转换的时候可能存在内存溢出或者精度问题 */
}
}
运行结果:
public class Demo06 {
public static void main(String[] args) {
//操作比较大的数的时候注意溢出
//JDK7的新特性,数字之间可以用下划线进行分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;//计算的时候已经溢出了
System.out.println(total);
long total2 = money*years;//默认是int,因为money*years这个就是int类型,在这里就已经溢出了,在转换就是转换的溢出之后的结果
System.out.println(total2);
long total3 = money*(long)years;//先把一个数据转换为long类型
System.out.println(total3);
}
}
运行结果:
6、变量
- 变量是什么:变量就是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和
- 注意事项
- 每个变量都有类型,类型可以是基本类型,也可是引用类型
- 变量名必须都是合法的标识符
- 变量声明必须是一条完整的语句,因此每个声明都必须以分号结束
7、变量的作用域:
-
类变量
-
实例变量
-
局部变量
public class Demo07 { //属性:变量 //实例变量:从属于对象;通过类来调用,不用进行初始化,会变成该类型的默认值,除了八大基本类型其他的 //默认值都是null String name; int age; //类变量 static int salary = 25000; //main方法 public static void main(String[] args) { //局部变量;必须声明和初始化值,只在这个方法体中有效 int i = 1; System.out.println(i); Demo07 demo07= new Demo07(); demo07.name="cyz"; System.out.println("name="+demo07.name+"\n"+"age="+demo07.age); System.out.println(salary); } //其他方法 public void add(){ } }
8、常量
-
常量:初始化后就不能在改变值!不会变动的值。
-
所谓的常量可以理解成一种特殊的变量,它的值被设定后,在程序运行的过程中不允许被改变
public class Demo09 { //下面两条语句的输出结果相同 //static final是修饰符,和位置无关 static final double PI =3.14; // final static double PI =3.14 public static void main(String[] args) { System.out.println(PI); } }
-
常量一般用大写字符
9、变量的命名规范
- 所有的变量、方法和类名:见名知意
- 类成员变量:首字母小写和驼峰原则,除了第一个单词外其他的首字母大写
- 例:monthSalary、lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母觉下划线
- 例:PI_MAX
- 类名首字母代谢和驼峰原则
- 方法名:首字母小写和驼峰原则
- 例:run()
10、运算符
-
Java支持如下运算符
-
算数运算符:+、-、*、/、%(取余或者模运算)、++、–
long a =23421125152l; int b = 132; short c = 10; byte d =8; System.out.println(a+b+c+d);//long System.out.println(b+c+d);//int System.out.println(c+d);//int /** * 有long的操作为long其余的都是int */ //++ -- 自增,自减 int a =3; System.out.println(a); int b =a++;//a++ a=a+1 a++是在执行完这行代码之后才执行+1,即给b赋值之后才执行+1 System.out.println(b); int c =++a;//a++ a=a+1 ++a是在执行完这行代码之前就执行+1,即给c赋值之前才执行+1 System.out.println(c); //幂运算 2^3 2*2*2=8 很多运算我们会使用工具类来计算 double pow =Math.pow(2,3); System.out.println(pow);
-
赋值运算符:=
-
关系运算符:>、<、>=、<=、、、instanceof
- 关系运算符返回的结果:正确(true)或者错误(false)返回的是布尔值
-
逻辑运算符:&&(与)、||(或)、!(非)
//与(and) 或(or) 非(取反) boolean a = true; boolean b =false; System.out.println("a&&b===="+(a&&b));//逻辑与运算,两变量都为真,结果才为真 System.out.println("a||b===="+(a||b));//逻辑或运算,有一个为真,结果就为真 System.out.println("!(a&&b)===="+!(a&&b));//逻辑非运算,如果为真,则变为假,如果为真就变为假 //短路运算 int c = 5; boolean d =(c<4)&&(c++<4);//因为c<4为假,所以直接返回假,而不会执行c++<4这个操作,所以c也不会自增 System.out.println(d); System.out.println(c);//c依然为4,因为上一步发生短路,并没有执行c++这个操作
-
位运算符:&、|、^、~、>>、<<、<<<(了解)
/**位运算 * A = 0011 1100 * B = 0000 1101 * A&B = 0011 1101 * A|B = 0000 1100 * A^B = 0011 0001 * ~B = 1111 1110 * 28 = 16 2222 * << 左移 相当于*2 * >> 右移 相当于/2 * 0000 0000 0 * 0000 0001 1 * 0000 0010 2 * 0000 0100 4 * 0000 1000 8 * 0001 0000 16 * 效率极高 */ System.out.println(2<<3);//结果为16
- 条件运算符:?、: ~~~java //+:字符串连接符 //只要有一方为字符串结果就位字符串 int a =10; int b =20; System.out.println("string"+a+b);//结果为string1020 System.out.println(a+b+"string");//结果为30string //以上两个输出的都是String类型的 /** * 三元运行符 * x ? y : z * 如果x为真结果为y,如果x结果假,结果为z * 必须掌握 */ System.out.println(80<60?"不及格":"及格");//输出及格
- 扩展赋值运算符:+=、-=、*=、/=
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cbKzG5Zs-1644305038014)(C:/Users/晁永政/AppData/Roaming/Typora/typora-user-images/image-20210416214752927.png)]
-
11、包机制
-
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间
-
包机制的语法格式为
package pkg1[.pkg2...]
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句可以完成此功能
import packge1[.packge2...].(classname|*);//*代表通配符,导包中的所有的类
12、JavaDoc
-
javadoc命令是用来生成自己的API文档的
-
参数信息
-
@autor 作者名
-
@version 版本号
-
@since 致命指明需要最早的JDK版本
-
@param 参数名
-
return 返回值情况
-
throws 异常抛出情况
-
十三、java流程控制
1、用户交互Scanner
通过Scanner类来获取用户的输入
基本语法:
Scanner s = new Scanner(System.in)
- 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取之前我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据
package com.wwm.Scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描对象,System.in用于接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用next方法接收
String str = scanner.next(); //程序会等待用户输入
System.out.println("输入的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
//IO流即输入输出流
scanner.close();
}
}
/* 输入 hello world 输出 hello */
package com.wwm.Scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方法接收:");
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
/* 输入 hello world 输出 hello world */
next(): 一定要读取得到有效字符后才可以结束输入 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符 ==next()==不能得到带有空格的字符串 nextLine(): ,也就是说nextLine()方法返回的是输入回车键之前的所有字符 可以获得空白
package com.wwm.Scanner;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("输入的内容为:"+str);
scanner.close();
}
}
/* 输入:欢迎学习狂神说java 欢迎大家来到线下学习 输出:欢迎学习狂神说java 欢迎大家来到线下学习 */
package com.wwm.Scanner; import java.util.Scanner; public class Demo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //从
键盘接收数据 int i = 0; float f = 0.0f; System.out.println("请输入整数:"); //如果。。。那么。。。。 if (scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整数数据:"+ i ); }else{ System.out.println("输入的不是整数数据!"); } System.out.println("请输入小数:"); if (scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小数数据:"+f); }else{ System.out.println("输入的不是小数数据!"); } scanner.close(); } }
package com.wwm.Scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少数字
int m = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while(scanner.hasNextDouble
标签: 0aa33晶体管模块0aa31晶体管模块