编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
编程需要依靠编程语言去完成
010101
0x15
C、C++、Java、PhP
J2EE(Java 2 Platform Enterprise Edition ) 分布式开发 例如:网络电子商务等
J2SE(Java 2 Platform Stand Edition) 嵌入式开发 例如:手机等小型电子设备的软件
J2ME(Java 2 Platform Micro Edition ) 桌面应用软件 例如: 单机软件
....从9版本开始每隔6月更新一次
想要使用某些软件,必须要给软件配置环境
配置了环境后,在计算机中可以在任意位置去启动想要使用的软件
此电脑→右键→属性→高级系统设置→环境变量→新建→JAVA_HOME(必须大写),浏览目录,选择安装盘符(目前在C:\Program Files\Java\jdk1.8.0_181)
注意:要根据自己的实际路径配置
此电脑→右键→属性→高级系统设置→环境变量→找到Path,点击编辑新建,编写%JAVA_HOME%\bin 此步是为调用jdk\bin下的javac.exe
最小单位:1位 表示一个1或者1个0
1个字节 8位 1111 1111 255
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
查看网络: ping
查看计算机相关信息: ipconfig /all
切换盘符: 盘名:
切换目录: cd 目录名称
启动软件 : 输入应用名称
JDK:
Java Developement Kit Java开发工具包 ,提供给所有Java开发人员使用的工具包,如果要开发Java程序,必须要安装JDK
JRE:
Java Runtime Environment Java运行时环境,运行Java程序需要的内容,将来如果只要运行一个Java程序,只要有JRE就可以了
JVM:
Java Virtual Machine Java虚拟机 : 所有的Java代码都是由Java虚拟机(JVM)帮助我们运行的
JVM三大任务 :
1,加载 :JVM负责把字节码文件(.class)加载到内存中
2,验证 :JVM对字节码文件进行验证,验证代码是否符合规范
3,执行:验证通过后,将代码执行出来
平台,指的是不同的操作系统
跨平台,就是指同一个Java程序,可以在不用的操作系统上运行
跨屏台实现原理:
通过不同操作系统的JVM,完成跨平台的操作
Java的HelloWorld(记事本、手动编译)
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!!");
}
}
1, public 表示一个修饰符,公共的意思,表示任意的位置都可以访问这个类
class 表示类的意思,表示这个Java文件是一个普通的类文件
HelloWorld 表示类的名称,用来标识这个类的,类名一般用大写开头
大括号 :这个类中代码的范围
2,public static void main(String[] args){} :main方法,固定写法,是程序的入口,所有的Java程序启动,都是从这个main开始
3,System.out.println() : 向控制台输出指定的内容,括号里面写什么,就会输出什么
写入汉字的时候编译报错的问题:
格式编译报错,需要修改文件的编码格式
修改完之后,重新编译
javac :用来编译指定的.java文件
java : 用来运行编译好的类文件
注释 :对于代码的解释,写给自己活着其他人看的
单行注释: 注释一行内容 ,一般解释一行代码,以 // 开头
多行注释 :注释多行内容,一般做一些说明性的注释 ,写在 /* */ 的范围内
取名规则:遵循标识符的命名规范
标识符 :标识符指的是Java中,类、方法、变量取名的一些规范名称
规范: 标识符有 数字、字母、下划线、$ 组成,不能以数字开头,不能和关键字同名
举例: 123abc 错误
正确 _abc123 ,abc_123 , $abc
变量名的取名 :
遵循标识符的命名规范的基础上,一般采用 小驼峰式 命名,首字母小写,后面的每个单词的首字母大写
尽量要遵循,望文生义
举例: userName ,productName, productId
类名的取名 :
遵循标识符的命名规范的基础上,采用 大驼峰式 的命名,首字母大写,后面的每个单词的首字母大写
举例 : class User{} class Person{} class Product{}
方法名的取名 :
遵循标识符的命名规范的基础上,一般采用 小驼峰式 命名,首字母小写,后面的每个单词的首字母大写
尽量要遵循,望文生义
举例 : void getUserName(){}
标识符的名称,不能和关键字同名
Java对大小写敏感,关键字大写是允许作为标识符名的
常量指的是在程序运行过程中,不会改变的量
分类如下 :
整数常量、 字符串常量、字符常量 、小数常量、布尔常量、空常量
public class DemoVariable01{
public static void main(String[] args){
//编写常量
//整数常量
System.out.println(10);
System.out.println(-10);
//字符串常量,写在一对双引号中的内容
System.out.println("hello");
System.out.println("123");
//浮点数常量,也就是小数值
System.out.println(3.14);
//字符常量,用单引号引起来的内容
//单引号中,有且仅有一个字符
System.out.println('a');
//System.out.println('ab');
System.out.println('中');
//布尔常量 true或者flase
System.out.println(true);
System.out.println(false);
//空常量 null,不能直接用来输出打印
//System.out.println(null);
}
}
数据类型 : 用来表示Java语言中使用的数据的方式
分类 : 基本数据类型 和 引用数据类型
基本数据类型:
四类八种:
整数类 : byte 、short 、int 、 long
浮点数类 :float 、double
字符类 : char
布尔类 :boolean
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 + 1000 0100 + 0 1000 011 0000 0000 0000 0000
5,测试结果
其中ob表示二进制
public static void main(String[] args) {
int i = 0b01000010001000011000000000000000;
System.out.println(Float.intBitsToFloat(i));
}
注意事项:
1、整数类型,默认是int类型
2、float类型和int类型的字节相同,位数也相同,但是int的精度更高
float类型的划分是1个符号位、8个指数位、23个尾数位,它的精度是23位,int就是31位
3、double类型的划分是1个符号位11个指数52个尾数位,比long类的范围大,精度比long类型低
4、浮点数类型,默认是double类型
概念:
在程序的运行过程中,可以改变的量,本质是内存中开辟的一块空间
变量的声明:
语法格式:数据类型 变量名 = 值;
变量声明注意事项:
1、变量不可重复定义,也就是变量名不能重复,值可以被改变
2、float类型和long类型变量,后面需要加上后缀,float加f或者F,long类型加L
3、byte类型和short类型变量声明的时候,它们的值不能超过它们的范围
4、没有赋值的变量,不能被使用,必须要赋值之后才能被调用
5、变量的使用,不能超过它的作用域
作用域:就是变量生效的范围,也就是它所在的那个大括号的范围
变量的其他声明方式:
方式1:
数据类型 变量1,变量2,变量3;
变量1 = 值; 变量2 = 值;变量3 = 值;
/**
变量的声明及使用
**/
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);
//声明变量
int number01 ;
number01 = 100;
System.out.println(number01); //想使用变量必须先赋值
{
int number02 = 200;
System.out.println(number02);
}
//超过作用域范围,无法调用
//System.out.println(number02);
//声明多个变量
int x,y,z;
x = 100;
y=200;
z=300;
int x1 = 100, y1 = 200,z1 = 300;
System.out.println(x);
System.out.println(y);
System.out.println(z);
System.out.println(x1);
System.out.println(y1);
System.out.println(z1);
}
}
练习:
声明两个变量a,b, a = 10, b = 20,输出着两个变量,输出内容是: a的值是:XX, b的值是:xx
然后将a 和 b 的值做交换,再分别输出a和b
public class DemoVariable03{
public static void main(String[] args){
/*
声明两个变量 a,b ,a = 10,b=20 ,输出这两个变量,
输出内容是 : a的值是 :xx ,b的值是:xx
然后将a和b的值做交换,再分别输出a和b
*/
int a = 10;
int b = 20;
System.out.println("a的值是:" + a);
System.out.println("b的值是:" + b);
//借助一个中间变量
int c;
c = a; //先把a赋值给c
a = b; //再把b赋值给a
b = c; //再把c赋值给b
System.out.println("a的值是:" + a);
System.out.println("b的值是:" + b);
}
}
大类型和小类型:大小类型的区分即是他们的取值范围的大小
byte short int long float double
大小数据类型的转换:
小类型 -> 大类型 : 隐式的数据转换,一定是安全的
大类型 -> 小类型 : 显示的数据类型转换
语法 : 小类型 = (小类型)大类型值;
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
int i = 200;
// 1100 1000 int类型的是32位,前面都是0,符号位0表示正数,1表示负数
//200转为byte类型后,byte只有8位,1100 1000 只被保留8位,第一位就被当做符号位
//1100 1000 除符号位外,做取反 +1
//10110111 +1 = 10111000 ==>-56
System.out.println((byte)i); //-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类型
}
}