JAVA入门
编程
根据自己的想法,将其整理出来,以编程语言的形式,让计算机按照人类的思想去完成操作。
编程需要依靠编程语言完成。
编程语言发展
第一阶段
二进制语言,只有计算机能读懂
第二阶段
汇编语言,计算机和人类都能看懂
第三阶段
编程语言,计算机和人类都能看懂(C,C++,Java,PhP)
Java发展史
略(
JDK环境配置
环境:
软件生活的地方,有些软件被使用时,必须被配置环境。配置环境后,在计算机中任意位置可以启动想要使用的软件
配置环境
path
二级制和十进制转换
计算机存储单位
最小单位:bit
一个字节 8位
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
命令提示符
查看网络 : ping
查看计算机相关信息 : ipconfig /all (有ALL的会更全面)
切换盘符 : 盘名: (如果要去d盘,就直接打d:)
切换目录: cd 目录名称
启动软件 : 输入应用名称
JDK JRE JVM(三大任务)
JDK
Java Development Kit Java开发工具包,如果要开发JAVA程序,必须要安装
JRE
Java Runtime Environment Java运行时环境,如果只需运行,那么仅需这个就可以
(environment的缩写怎么能是ele呢)
JVM
Java Virtual Machine Java虚拟机,所有Java代码都是由他帮助我们运行的
三大任务:加载,验证,执行
加载:JVM将字节码文件(.class)加载到内存中
验证:JVM对其进行验证,验证代码是否符合规范
执行:将验证通过的代码执行,内部需要对文件进行管理转化等操作
Java的HelloWorld(记事本、手动编译)
代码解释:
行数1:
public class HelloWorld{
public表示修饰符,公共的意思,表示任意位置均可访问
class表示类的意思,表示该文件是一个普通的类
HelloWorld表示类名,用来表示这个类,类名应与文件名保持一致,如果大小写不一致,将会报错,类名一般是由大写开头的
{ }:表示这个类的代码的范围,类里面的代码不可超过此范围
行数2:
public static void main(String[] args){
main方法, 固定写法,是程序入口,所有Java程序从此开始启动
行数3:
System.out.println("Hello World");
输出,引号里面是什么内容,就会输出什么内容
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
将上述代码写在记事本中,并通过重命名更改后缀为.java,
文件后缀可在此进行选择(查看)
然后再上面输入cmd即可直接打开该文件夹,然后输入
javac HelloWorld.java
即可得出如下界面
运行完成后,会在文件夹中多出一个后缀名为.class的文件,可知运行成功
运行.class文件,但是运行时不需要加后缀名,即可运行成功
当文件中输出内容有中文时将会报错
此时,就需要更改编码格式
更改后,文件即可运行成功并输出汉字形式
命令解释:
javac:用来编译java指令
java:用来运行被编译好的类文件
Java跨平台
同样java文件可在linux中运行
将java文件拖入到linux 中,运行后也会生成.class文件,可知在此也可运行成功
由此可知,JAVA可跨平台
平台,指的就是不同的操作系统
跨平台,同一个java文件,可在win中运行,也可直接在ios,linux操作系统运行
跨平台实现原理,就是能够通过不同系统的JVM进行实现
Java语言
Java注释
注释(跟C语言中是一样的):
单行注释://
多行注释:/* */
数据类型
变量的定义、变量命名规则
取名规则:遵循标识符命名规范
标识符:类、方法、变量取名
规范:由数字、字母、下划线、$组成,不以数字开头,不与关键字同名
举例:正确标识符:
_abc123
abc_123
$abc
变量名取名:
遵循标识符命名规范,并且采用小驼峰式命名,即首字母小写,后面单词首字母大写,尽量可做到“望文生义”
举例:正确变量名:
userName
productName
类名取名
遵循标识符命名规范,并且采用大驼峰式命名,即首字母大写,后面单词首字母大写
举例:正确类名
class User {}
class Person{}
class Product{}
方法名取名
遵循标识符命名规范,并且采用小驼峰式命名,即首字母小写,后面单词首字母大写
void getUserName(){
}
练习:
五个变量名:图书编号,图书名,图书作者,图书出版社,图书价格
五个类名:书籍类,作者类,用户类,出版社类名,借阅类
五个方法名:获取作者名,添加书籍,修改书籍,获取用户信息,删除用户信息
关键字
//访问控制
private protected public
//类,方法和变量修饰符
abstract class extends final implements interface native new static
strictfp synchronized transient volatile
//程序控制
break continue return do while if else for instanceof
switch case default
//错误处理
try catch throw throws
//包相关
import package
//基本类型
boolean byte char double float int long short null
true false
//变量引用
super this void
//保留字
goto const
注:1.标识符的名称,不能和关键字同名
2.Java对大小写敏感,关键字大写是允许作为标识符名的,但一般尽量避免写相同单词,一般来说,若希望带有,则放在标识符中,额外增加其他词汇共同构成
常量
常量指在程序运行中不会改变的量
常量的分类如下:
整数常量、字符串常量、字符常量、小数常量、布尔常量、空常量
编写常量:
public class DemoVariable01{
public static void main(String[] args){
//编写常量
//整数常量
System.out.println(10);
System.out.println(-10);
//字符串常量,写在一对引号中的内容
System.out.println("我爱你!");
System.out.println("10");
//浮点数常量,就是一个小数
System.out.println(3.14);
//字符常量,就是用单引号包含的内容,如果超出一个字符,将会报错
//一个中文字也是可以的
System.out.println('a');
System.out.println('中');
//布尔常量 true/false
System.out.println(true);
//空常量
//System.out.println(null);
}
}
注:空值输出也会报错
基本数据类型
数据类型 : 用来表示Java语言中使用的数据的方式
分类 : 基本数据类型 和 引用数据类型
基本数据类型:
四类八种:
整数类 : byte short int long
浮点数类 :float double
字符类 : char
布尔类 :boolean
浮点数二进制转换:以30.25为例
浮点数:
构成:
第一位:符号位
第二至第九位:指数位
第九位之后:位数位
首先将30.25转换成二进制,小数的二进制转换规则为乘二取整。
由于该数字为整数,所以符号位为0
然后将小数点向前移动,移动到第一个1的后面。根据题目,移动了四位
由于浮点的构成规则,得出的4+127,得到的数字为指数位,并用二进制进行表示,即1000 0011
然后将小数点后的数字补到后面即0 1000 0011 1110 0100
剩下的位数用0进行填补,直到补至32位
注:
1.整数类型,默认为int
2.float类型和int类型字节相同,位数也相同,但是int精度更高
float类型的划分是1个符号位,8个指数位,23个尾数位,精度为23位,int是32位,float取值范围大
3.double类型的划分为1个符号位,11个指数位,52个尾数位,比long类的范围大,精度比long类型低
4,浮点数类型,默认是double类型
变量
在程序的运行中,可以改变的量,本质是内存中开辟的一块空间
变量的声明及使用
格式:
数据类型 变量名 = 值
public class DemoVariable02{
public static void main(String[] args){
//声明变量
//声明整数类型
//语法:数据类型 变量名 = 值;
byte b1 = 100;
//byte b3 = 200;
//此句将会报错,因为200超出数据类型的范围
System.out.println(b1);
//System.out.println(b3);
short s1 = 200;
System.out.println(s1);
//不可以声明同名变量
b1 = 110;
System.out.println(b1);
//long类型
long l =1000L;
System.out.println(l);
//float类型
float f1 = 3.45F;
System.out.println(f1);
//double类型
double d1 = 2.57;
System.out.println(d1);
//字符类型
char ch = 'A';
System.out.println(ch);
//布尔类型只有true和false
boolean b2 = true;
System.out.println(b2);
}
}
注:1.声明的数值不能超过范围
2.不可以声明同名的变量,但值可以被改变
3.float类型和long类型变量,后面需要加上后缀,float类型后面加F,long类型后面加L
4.没有赋值的变量不能被使用,必须要被赋值后才能被调用
5.变量的使用不能超过作用域(变量生效的范围)
//若在大括号中进行声明,那么该变量的作用域为该括号内
{int number02 = 100;
System.out.println(number02);
}
//System.out.println(number02);
//此位置则不可使用
6.变量的其他声明方式(一次声明多个变量)
//声明多个变量
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){
int a = 10;
int b = 20;
System.out.println("a的值是"+a);
System.out.println("b的值是"+b);
int c = 0;
c = b;
b = a;
a = c;
System.out.println("a的值是"+a);
System.out.println("b的值是"+b);
}
}
类型转换
类型转换,就是大类型和小类型,int和char之间的转换
大类型和小类型:大小类型的区分就是他们取值范围的大小
大小数据类型的转换:
小类型->大类型:隐式的数据转换,一定是安全的,类似于小水杯的水倒在大水杯中,一定可以,但是可能会产生精度丢失的问题
public class DemoVariable04{
public static void main(String[] args){
//隐式数据转换,小至大
byte b = 100;
int i = b;
System.out.println(i);
//小类型向大类型转换时,会导致精度丢失
float f1 = 2.51f;
double d1 = f1;
System.out.println(d1);
int num = 1234;
float f2 = num;
System.out.println(f2);
byte b1 = 50;
byte b2 = 50;
//byte b3 = b1 + b2;
//此语句会导致报错,可运用强制转换
byte b4 = (byte)(b1+b2);
System.out.println(b4);
}
}
大类型->小类型:显示的数据类型转换
语法: 小类型 = (小类型) 大类型值;
public class DemoVariable04{
public static void main(String[] args){
//隐式数据转换,大至小
int num01 = 100;
byte num02 = (byte)num01;
System.out.println(num02);
//大类型转为小类型,需要强制转换,
//如果超过了小类型的范围,可以转换成功,但是结果会发生改变
int num03 = 200;
byte num04 = (byte)num03;
System.out.println(num04);
double num05 = 2.56;
float f3 = (float)num05;
System.out.println(f3);
}
}
字符转换
public class DemoVariable04{
public static void main(String[] args){
//字符
char ch01 = 'a';
System.out.println(ch01 + 1); //98
float f4 = (float)2.56; //通过将double类型 2.56强转为float
float f5 = 2.56f; //声明的时候,直接声明为float类型
}
}