环境
并非所有的计算机都可以开发java程序,java程序的开发与运行需要专门的环境。
因为java语言的程序是运行在java所专有的系统中。
-
要运行java程序我们需要在操作系统(windows,MACOS,Linux)安装jre(Java Runtime Environment,简称JRE)。
-
要编译(开发)java程序,我们就需要安装JDK(Java Development Kit)。
jre和JDK都是一个软件,jre这个软件可以运行java编译后的程序。JDK中包含了JRE,JDK中不止有JRE还有java程序的编译软件。我们作为java程序员,只要安装JDK即可。
[1]安装JDK
关键的步骤:
安装完成之后,会在安装的目录中产生一个文件夹:
java目录中有一个JDK和JRE,查看JDK的目录下的内容:
[2]配置环境变量
我们要使用 java -version
查看当前的JDK的版本。
打开命令窗口:
①在运行中输入CMD,回车。
②按键盘上的win键+R键。
所有的命令窗口默认都是在C盘,
我们需要连接几个简单dos命令。
-
盘符切换 : 进入任何和一个盘符, 都是使用
盘符名称:
比如 :D :
-
进入某一个目录: cd 目录名称
我们要执行java命令,就要进入jdk的bin目录。
因为命令本身也是一段程序,所有要运行这个命令,必须能找到这个命令,所以我们要进入JDK的bin目录才能执行java的命令。
我们不可能每次执行java程序都要进入这个bin目录,所以要配置环境变量,环境变量的作用就是让操作系统可以在任何位置都能找到java的命令。
配置环境变量开始:
新建用户变量或者系统变量
修改PATH变量
新建编辑环境变量
测试运行环境和编译环境的版本:
java语言的介绍
-
java语言是所有的面向对象语言的带头大哥。
-
java语言是目前位置跨平台做的最好的一门语言。
java语言的运行
第一个java程序:
在任何位置创建一个记事本文件,后缀修改为.java
我这里的命名是Hello.java
在其中编写如下内容:
public class Hello{
public static void main(String []args){
System.out.println("Hello Java!");
}
}
保存文件之后,在文件所在的目录进行编译。使用命令 javac 文件名,
运行字节码文件 : java Hello
第一个java程序的几个问题:
-
源文件的后缀必须是.java
-
源文件的名字最好是英文,所有的单词的首字母最好大写。
-
程序中的类名和文件名必须完全一致
-
java语言是严格区分大小写的,所以该大写的字母一定要大写。
-
所有的标点符号必须是英文状态输入。
-
每一句程序结束了必须使用“;”结尾。
java程序的运行过程
java程序三步走:
①编写源程序。 所谓源程序就是我们编写的.java文件。里面的内容是程序员看得懂。
②编译远程。 使用 javac
命令将源程序编译成字节码文件(.class文件)。java程序是运行在JVM上的,JVM只认识字节码文件。
③执行java字节码文件。 使用java
命令执行java字节码文件。
JVM
JVM本身是一个软件,在jre中就有JVM。
这台电脑使用的JVM是:
java语言一个非常重要的特性就是跨平台。
所谓跨平台,就是我们在任何一个操作系统中将java源程序编译成字节码文件,然后这个字节码文件可以在任何其他的操作系统中正常运行。
java语言如何跨平台:
java语言跨平台就是通过JVM实现,java程序是运行在JVM上的,和操作系统本身是没关系。JVM就像一个花盆,java程序就好像花盆中的一颗植物。这棵植物只关心花盆,不关心花盆在哪里。
不同的操作系统上有不同的JVM。这个写JVM对java程序的解释是一样的。
所以Oracle为每一个不同的操作系统都提供了专门的JVM。我们现在所说的JVM只是一个规范(标准)。
目前市面上最流行的JVM就是HotSpot。就是全是的java的解释器就只有HotSpot。这就是它规范的原因。
开发工具
java程序的开发工具:
常见的开发工具:记事本、eclipse(免费的)、IDEA(可以试用一个月)、NetBeans........
java语法语法基础
Hello程序的说明
我们的第一个java程序:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Java!");
}
}
java程序的最小阻止单元是"类" (class)。
在java文件中(.java结尾)编写java类。
在Hello.java文件中的写法:
public class Hello
是固定写法。这里Hello称之为类名,类名必须和文件名完全一致。public和class 是固定的关键字。类中的程序要写在一对{}
上面类中的:
public static void main(String[] args) {
System.out.println("Hello Java!");
}
称之为主函数,主函数的签名: public static void main(String[] args)
固定写法!!!。
主函数中要执行的程序要写在一对{}
中。 我们目前写的就是在控制台输出“Hello Java”。
基本结构:
类和主函数之间,主函数和要执行的程序之间都是有缩进的。这个缩进是一个制表符。任何一个结构的开始的{
都是在语句的后面,结束的"}"都是在下面的。
数据类型
为什么要有数据类型?
我们认知周边的事物就是分类识别,同样计算机要处理数据,也是分类处理数据,所有就有了数据类型。
java中的数据类型:
java中的8中基本数据类型:
-
byte 字节型。 在内存中占8个bit。 表示范围是 -128 ~127
-
shrot 短整型。 在内中占2个字节。16个bit。 -32768 ~ 32767
-
int 整形。 在内存中占4个字节。 32个bit。-2147483648 ~ 2147483647
-
long 长整型。在内存中占8个字节。64个bit。-9223372036854775808 ~ 9223372036854775806
-
float 浮点型。在内存中占4个字节。32个bit。1.4E-45 ~ 3.4028235E38
-
double双精度型。在内存中占8个字节。64个bit。4.9E-324 ~ 1.7976931348623157E308
-
char字符型。表示"一个"字符。在内存中占2个字节。16个bit。 0~ 65535
-
boolean布尔型。表示true或者false。在内存中理论上占一个bit位。 在java中boolean的值只有true和false。
特殊的引用类型:String 表示字符串。多个字符:“Hello”。
变量
变量是存储数据的最小单元。
java语言是强数据类类型,申明变量的时候必须注名变量要存储的数据类型。申请之后,变量的类型不能随意改变。
申请变量的语法:
数据类型 变量名;
给变量赋值依然是使用赋值运算符=
:
变量名 = 变量的值 ;
//申请的同时赋值
数据类型 变量名 = 变量的值;
使用变量的时候,直接使用变量的名称即可。
案例:
public class Demo1 {
public static void main(String [] args){
// 申请变量
int age;
// 给变量赋值(不同数据类型,赋值方式不一样)
age = 18; // 整形直接写数字即可。
// 申请的同时赋值
double score = 86.9; // double类型的直接写数字即可。
// 使用变量输出这两个变量值
System.out.println(age);
System.out.println(score);
}
}
不同类型的变量的赋值方式:
// 不同类型的变量的赋值方式
// byte类型, 数字,注意范围不要超过byte的范围
byte b = 127;
// short,数字,主要范围不要超过short范围
short s = 32000;
// int类型 数字,主要范围不要超过int范围
int i = 65432656;
// long类型,数字,注意如果数字超过了int的范围,则需要使用"L/l"表示当前数字是长整型
long l = 2111111111111110L;
// 字符型 单个字符,必须使用单引号包裹
char ch = '男';
// 浮点型 如果赋值是小数,必须有后缀"F/f"。
float f = 12.0F;
// 双精度型 数字,直接写。 可以在后面使用"D/d"。
double d = 12.5;
// boolean类型。 在java中boolean只有true或者false。
boolean flag = true;
// 非基本类型的String 类型的名字是String,赋值要使用双引号
String name = "旗木卡卡西";
命名规则和规范
类名,变量名的命名规则:(绝对不能触犯)
-
不能以数字开头
-
不能有特殊符号
-
不能是java的关键字或者保留字符。
类名,变量名的命名规范:
-
所有类名 单词的首字母必须大写 Demo
- 所有的变量名 第一个单词全部小写,其余单词的首字母必须大写 firsrName
-
如果是缩写,类名则全部大写,变量名则全部小写
-
言简意赅。
-
尽量使用英文单词,如果是拼音,不允许使用拼音和英文的混合。千万不要使用拼音缩写。更不要使用中文。
数据类型转换
所谓数据类型转换,就是各种不同的数据类型之间的转换。
问题:不同的数据类型在内存中的所占的bit位是不一样的。那么数字 10 在内存中占多少bit位?
理论上数字10只需要4个bit位(1010)。但是数字10有不同的类型:
byte b = 10;
short s = 10;
int i = 10;
long l = 10;
float f = 10;
double d = 10;
上面的定义在内存中的情况:
任何一个类型在无论数值多大,在内存中占的位置大小是固定的。
我们将任何一个byte类型的数据直接赋值给int类型,是否行得通?
byte x = ???; int i = x;
其实就是任何小的类型到大的类型都是自动转换的。
还有一个特殊的情况就是: char可以自动转换为int。
看图记忆:
几个问题:
给长整型赋值:
当我们写任何整形数字的时候,如果没有任何修饰(后缀)。 这个数字默认是int类型。
如果是将这个数字赋值给byte或者short,则默认会转换为对应的类型,当然范围必须在对应的类型的范围内。
byte x = 10; short s = 100;
但是如果将整形数字赋值给长整型变量,这个数字则默认就是整形的。如果超过了整形的范围,就会报错,必须使用"L"标明是长整型。
long l = 21111111110L;
给float赋值:
float f = 12.5;
所有的小数在默认情况下都是double。所以当给float的变量赋值小数的时候,必须使用"F"后缀。
小的类型到大的类型是自动转换的,那么大类型能否转换小类型。
计算机认为将int转换为short的时候,空间放不下,可能会丢失数据。我们知道不会丢失,所以我们可以强制转换。
语法:[目标类型就是我们要转换成的类型,源数据就是原始的数据]
目标类型 变量名 = (目标类型)源数据。
int x = 10; // 强制类型转换 short s2 = (short)x;
上面的案例中是没有数据丢失的。
double d = 12.5; // 强制类型转换 int a = (int)d; System.out.println(a);
上面的强制类型转换会导致小数部分直接被丢弃。
基本类型和字符串之间的转换
任何类型转换为字符串 都可以使用 : xxxx + ""
字符串转换为其他类型:
[1]字符串转换为整形
前提是字符串必须是整数形式的字符串,比如: "128","369"。
操作语法:
String age = "20"; // 使用Integer.parseInt(str) 将字符串转换为数字 int age_ = Integer.parseInt(age); System.out.println(age_);
如果字符串格式不争取,则会报错:
[2]转换为Float或者Double或者Short或者byte或者......
String str = "10"; byte b1 = Byte.parseByte(str); short s3 = Short.parseShort(str); long ll = Long.parseLong(str); float f1 = Float.parseFloat(str); double d1 = Double.parseDouble(str); // 取出字符串中的某一个字符, 其中0就索引。 char ch = str.charAt(0); String bstr = "false"; boolean flag = Boolean.parseBoolean(bstr);
语句
控制台的输出语句,纯粹的为了方便我们学习,在实际工作中,几乎没啥用。
固定的语法:
System.out.print();// 输出不换行 System.out.println();// 输出且换行
// 直接输出一个字符串,并且换行 System.out.println("今天天气不太好!"); System.out.println("的确不太好"); // 输出字符串,但是不换行 System.out.print("这是第一行,"); System.out.print("还是第一行"); System.out.println();// 输出一个空的换行 // 可以输出任何类型的数据 System.out.println('帅'); System.out.println(15); System.out.println(15L); System.out.println(12.5); System.out.println(true); // 可以在()中使用“+”连接任何类型和字符串 System.out.println("小明的名字是:" + "小明"); System.out.println("小明的成绩是:" + 89); // 如果是两个数字,”+“可能会出现数学运算 System.out.println(5+6); // 任何变量都不需要双引号,可以直接输出或者使用"+"连接 String name = "旗木卡卡西"; int age = 28; System.out.println(name + "的年龄是" + age); int x = 3;int y = 4; int temp = x ; x = y; y = temp; System.out.println("x = " + x); System.out.println("y = " + y);
在输出语句中还有一些特殊的符号
在字符串中可以使用\n
表示换行。 可以使用\t
表示一个制表符。可以使用\\
表示一个\
看案例:
// \n表示换行 System.out.println("你好!\n 今天天气不错!"); System.out.println("张三\t李四\t王五"); System.out.println("我的程序在C:\\code下"); // 输出一个成绩表 System.out.println("姓名 语文 数学 英语"); System.out.println("张三 80 89 85"); System.out.println("张三丰 80 89 85"); System.out.println("卡卡西 80 89 85"); System.out.println("-------------------"); System.out.println("姓名\t语文\t数学\t英语"); System.out.println("张三\t80\t89\t85"); System.out.println("张三丰\t80\t89\t85"); System.out.println("卡卡西\t80\t89\t85");