1、什么是编程?
就是人类将自己的想法思路整理出来,以编程语言的形式,告诉计算机,让计算机可以按照我们人类的思想,去完成指定的操作。
2、编程语言的发展历史
第一阶段:二进制语言 ,只有计算机能理解,01010101
第二阶段:汇编语言 ,类似于0x15, 计算机能够看懂,有些这种格式代码人类也能看懂
第三阶段: 编程语言, 人类能够懂,计算机能读懂,比如c语言,c++,java等等
3、java的发展历史
1995年sum公司发布java1.0版本
1997java1.1版本
1998拆分为3个版本 面向桌面应用 j2SE 面向分布式企业级的应用j2EE 面向移动手机的j2ME
2004-2014 java5-java8
2017 java9
2018年3月 java10
2018年9月 java11
从java9开始每6个月更新一次
4、jdk环境配置
环境:软件存在需要依赖的一些东西,想要使用某些软件环境,必须给软件配置环境
配置了环境之后,就能够在任意位置去启动想要的软件
系统变量 配置一个 JAVA_HOME 找到jdk安装路径地址(不要包含\bin)
5、二进制
十进制转二进制(倒着读)
二进制转十进制
计算机的最小存储单位
最小单位:位
1个字节 8 位 1111 1111 255
1kb=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
6、命令提示符
查看计算机相关信息: ipconfig
cls
查看网络连接:ping
切换到d盘:d:
切换目录:cd+目录名称
查看当前位置有什么:dir
启动软件:输入应用名称
7、JDK JRE JVM(三大任务)
jdk: java development kit java开发工具包,提供给所有java开发人员使用的开发工具包,
如果要开发java程序,必须要安装jdk
jre: java runtime elevement 运行时环境 ,运行java程序需要的内容,如果只要运行一个java程序,那么
只要有jre就行
jvm: java virtual machine java虚拟机 所有的java代码都是由jvm帮助我们运行的
jvm的三大任务:
1、加载:jvm负责把字节码文件(class)加载到内存中去
2、验证:jvm对字节码文件进行验证,验证代码是否符合规范
3 、执行:验证通过后,执行代码
8、Java的HelloWorld(记事本、手动编译)
public class Hello{ public static void main(String[] args){ System.out.println("hello world!"); } }
1、public表示一个修饰符,公共意思,表示任意的位置可以访问这个类
class表示类,表示这个Java文件是一个普通的类文件
Hello表示类名,用来标识这个类,类名必须与文件名同名
大括号{}:表示类中代码的范围
2、public static void main(String[] args){}:main方法,固定写法,是程序的入口,都是从这个main方法开始
3、 System.out.println("hello world!"):向控制台输出指定的类,括号里面写什么,就会输出什么 。
9、Java常用命令:java javac
- java javac是在jdk的bin目录下
- javac:用来编译指定的Java文件
- Java:用来运行编译好的Java.class类文件
10、java跨平台
平台,指的是不同的操作系统
跨平台,就是指同一个Java程序,可以在不同的操作系统上运行
跨平台实现原理:通过不同操作系统的jvm,完成跨平台的操作
11、Java中的注释
注释:对于代码的解释,写给自己或其他人看的
单行注释:注释一行内容,以//开头
多行注释:注释多行内容, 一般做一些说明性的内容,协作/* */范围内
12、变量的定义、变量的命名规则
变量的取名规则:遵循标识符的命名规范
标识符:指的是Java中类方法变量取名的一些规范名称
规范:标识符由数字、字母、下划线、$符组成,不能以数字开头
举例:123abc 错误的
_abc123 $abc 正确的
变量名:遵循标识符命名规范的继续上,一般采用小驼峰命名,首字母小写,后面每个单词的首字母大写
尽量遵循望文生义
举例:userName, productName
类名的取名:采用大驼峰命名方式,大驼峰命名,首字母大写,后面的每个单词首字母大写
举例:class User{} class Person{}
方法名的取名:和变量名的取名规则一样
举例:void getUserName(){}
练习:
1、取五个变量名 :图书编号 图书名 图书作者 图书出版社 图书价格
int bookId; String bookName; String bookAuthor; String bookPublisher; int bookPrice;
2、取五个类名: 书籍类 作者类 用户类 出版社类 借阅类
class Book{}
class Author{}
class User{}
class Publisher{}
class Library{}
3、方法名:获取作者名 添加书籍 修改书籍 获取用户信息 删除用户信息
void getAuthorName(){}
void addBook(){}
void updateBook(){}
void getUserInfo(){}
void deleteUserInfo(){}
13、Java的关键字
标识符的名称,不能和关键字同名
Java对大小写敏感,标志符的大写是允许作为标识符的
14、常量
是程序运行过程中,不会改变的量
分类如下:
整数常量、 字符串常量、小数常量、 字符常量、布尔常量、空常量;
15、数据类型&变量
数据类型:用来表示Java语言中使用的数据方式
数据类型分类:基本数据类型 和 引用数据类型
基本数据类型:四类八
整数:byte short int long
浮点:flout double
布尔:boolean
字符:char
Java中的数据类型,首位都表示符号位,所以取值范围都是位数-1之后做计算
浮点数类型转二进制的方式 :以40.375为例
1,先求整数部分 40 的二进制 ==> 0010 1000
2,求小数部分0.375的二进制 ,小数求二进制的方式是, 小数部分 乘 2 ,满1取1,不满1取0
0.375 * 2 = 0.75 => 0
0.75 * 2 = 1.5 => 1
0.5 * 2 = 1 => 1
0.375的二进制结果为 : 011
40.375 组合后的二进制值为 : 0010 1000 . 011
3,小数点左移,左移到最高位的1后面
0010 1000 . 011 ==> 001.0 1000 011
移动的位数+ 127 ==> 5 + 127 = 132 =>
4,计算最终的二进制值
符号位 + 132的二进制(移动后数值的二进制) + 小数点后的二进制 后补0
0 +
注意事项:
1、整数类型:默认为int类型
2、float类型和int类型字节相同,位数也相同,但是int的精度更高
float类型的划分是1个符合位 8个指数位 23 个符合位,它的进度是23位,int的精度是31位
float类型的取值范围更大
3、 double类型的划分是一个符号位+11个指数位+52个尾数位,比long类的范围大,精度比long类型小;
4、浮点数类型的默认是double类型
/** 变量的声明及使用 **/ public class DemoVariable02{ public static void main(String[] args){ //声明变量 //声明整数类型 //语法 : 数据类型 变量名 = 值; byte b1 = 100; //byte b2 = 200; //声明的数值,不能超过数据类型的范围 System.out.println(b1); //System.out.println(b2); short s1 = 200; System.out.println(s1); //int类型的声明 //int b1 = 300; //不可以声明同名的变量 b1 = 110; System.out.println(b1); int i = 100; System.out.println(i); //long类型 long l = 1000L; System.out.println(l); //float类型 float f1 = 3.45F; System.out.println(f1); //double类型 double d1 = 2.58; System.out.println(d1); //字符类型 char ch = 'A'; System.out.println(ch); //布尔类型,只有两个值,true或者false boolean b2 = true; System.out.println(b2); } }
16、变量
变量的概念:在程序的运行的过程中可以改变的量,本质是内存中开辟的一块空间
变量的声明:
格式:数据类型 变量名=值;
变量声明注意事项:
1、变量不能重复定义,也就是变量名不能重复,值可以改变
2、float和long类型变量,后面需要加后缀,float加F,long加L
3、byte和short类型变量,变量的值不能超过类型的范围
4、没有赋值的变量不能被使用,必须赋值后才能被调用
5、变量的使用不能超过它的作用域
作用域:就是变量生效的一个范围也就是所在的那个{}里面
6、变量的其他声明方式:
一次性声明多个变量
练习:声明两个变量,a=10;b=20,输出这两个变量, 然后将ab交换,输出a和b public class DemoVariable3{ public static void main(String[]args){ int a=10; int b=20; System.out.println("a的值是"+a); System.out.println("b的值是"+b); //int temp=a; //a=b; //b=temp; int temp=a; a=b; b=temp; System.out.println("a的值是"+a); System.out.println("b的值是"+b); } }
17、类型转换(大类型&小类型、int&char的转换)
大类型和小类型:大小类型的区分即是他们的取值范围的大小
大小类型的数据转换:
小类型》大类型:隐式数据转换,数据一定是安全的
大类型>小类型:显示数据类型转换
语法: 小类型=(小类型)大类型值;
public class DemoVariable04{ public static void main(String[] args){ //隐式的数据类型转换,小类型 -> 大类型 byte b = 100; int i = b; System.out.println(i); //小类型向大类型转换的时候,会产生精度丢失问题 float f1 = 2.58F; double d1 = f1; // 2.5799999237060547 System.out.println(d1); int num = 1234; float f2 = num; System.out.println(f2); //byte类型或者short类型,如果做运算,会被提升类型为int,结果需要做强制转换 byte b1 = 50; byte b2 = 50; int b3 = b1 + b2; //byte + byte => int + int byte b4 = (byte)(b1 + b2); System.out.println(b3); System.out.println(b4); //显示的数据类型转换, 大 -> 小 int num01 = 100; byte num02 = (byte)num01; System.out.println(num02); //大类型的值,转为小类型,需要强制转换, //如果超过了小类型的范围,可以转换成功,但是最终的结果会发生改变 int num03 = 200; byte num04 = (byte)num03; System.out.println(num04); //-56 double num05 = 2.56; float f3 = (float)num05; System.out.println(f3); int num06 = (int)num05; System.out.println(num06); //2 //字符 char ch01 = 'a'; System.out.println(ch01 + 1); //98 float f4 = (float)2.56; //通过将double类型 2.56强转为float float f5 = 2.56f; //声明的时候,直接声明为float类型 } }