这是第一篇自写的博客文章,小白操作,不喜勿喷。
在学习Java语言之前,我们有必要了解一下什么是计算机语言,简单来说计算机语言就是人与计算机之间通讯的语言,在计算机系统中,所以语言是通过指令(也就是各种语句)传达给机器的。
如今通用的编程语言有两种形式:汇编语言和高级语言,现下我们所要学的Java语言就是高级语言中的解释类语言。
Java的官方网站:www.java.sun.com;
JavaSE:标准版,用于开发桌面运用。
JavaEE:企业版,用于开发网络运用。
JavaME:微型版,用开发写手机运用。
1、简单的:相对于其他的编程语言来说较为简单。
2、语言是面向对象的。
3、语言是分布式的。
4、健壮的。
5、安全的。
6、体系结构中立的。
7、可移植的。
…
1995年:Java语言诞生 。
1996年:第一个JDK-JDK1.0诞生。
首先我们需要下载java开发工具包JDK。下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html。
然后根据我们自己的系统选择相应的版本:
下载好JDK的安装包之后,请牢记你的JDK包的存放路径。然后安装JDK,同样需要记住该路径。
安装完成之后,我们需要进行环境变量的配置。如下:
找到我们的桌面应用此电脑,右键->点击属性->我们会得到这样的一个界面
找到这个高级系统设置,点击进入到下一个页面,选择环境变量,进行如下操作:
在"系统变量"中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。
变量设置参数如下:
变量名:JAVA_HOME
变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 要根据自己的实际路径配置
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
以上都弄好之后,我们可以在DOS命令窗口查看是否配置成功,如下:
用键盘的windows+r键可以打开如下窗口:
键入cmd命令就可以打开我们都DOS窗口了。
打开之后我们输入java命令后回车。
接着输入javac命令后回车
里面的内容不用细看,看了也看不懂,只要输入这两个命令能出现这样的两大堆代码就说明配置成功了。
没有出现的话,你需要检查你的环境变量配置是否出错。或者JDK的安装包是否为正版。其次就需要你百度了。
当我们写好一个Java程序之后,它是怎么运行的呢?作为一个准备走程序员放心的你来说,此时就有必要了解一下它的工作原理了。
Java源程序也就是 .java文件经过 “ 编译” 之后成为 .class 文件,也叫作字节码文件,再利用JDK里面的虚拟机环境来翻译给其他的平台用户。
之前介绍的Java语言的特点里面的 “ 体系结构中立 ” 就体现在这个 .class 文件处了。编译之后,后面执行的是这个编译之后的文件,并不是我们的源文件。你可以尝试删除源文件,只要保留这个 .class 文件,你会发现还是可以运行的。
我们可以打开我们的安装JDK文件夹看到一些文件夹,这些文件夹是干什么的?来看看下面的介绍吧。
(1)bin: jdk/bin目录下基本都是.exe结尾的可执行文件
(2)lib: jdk/lib目录存放的都是Java开发工具要用的一些库文件
(3)jdk/jre 目录提供java程序运行的全部环境
(4)jdk/jre/lib: 该目录提供了JRE要用的代码库
(5)jdk/db 目录,该目录应该是新加的,JDK6之后自带的微型数据库,这是一个纯 Java 实现、开源的数据库管理系统(DBMS)。
平台环境搭建好之后,就该开始语言的认识学习了
exit:退出窗口。
cd + 文件或者盘符名称:进入目标文件或者盘符。
盘名+: :表示切换盘操作。
echo空格+内容+“>”+文件名.后缀 :创建文件。
type+空格+文件名称.后缀 :查看文件内容。
md 文件名称 :创建文件夹。
rd文件夹名称 :删除文件夹(必须是空的文件夹)。
del.文件名称 :删除文件。
cd+/:返回盘符根目录。
cd+…/:返回上一级目录。
**注意:**echo创建文件的时候,会杨文件里面的原来内容覆盖掉,为了解决这一个问题,可以用echo空格+内容+>>+文件名.后缀,这样子可以直接在原来内容的下一行进行写入新内容。
DOS界面写一个hello world!Java程序:
Java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符.标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。
标识符的定义规则:
1、由26个英文字母大小写,数字0-9,_、$,这些符号组成。
2、数字不能作为开头。
3、不可以直接使用关键字,但是可以包含关键字和保留字。
4、严格区分大小写。
标识符的命名规则:
包名:多单词组成时所有的字母都小写。如:xxxyyyzzz
常量名:所有字母都大写,多单词组成时用下划线连接。XXX_YYY_ZZZ
类名接口名:多单词组成是所有的首字母大写。驼峰写法:XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,之后的单词首字母大写。xxxYyyZzz
至于Java里面的关键字,我们没必要刻意去记,有印象就好。
数据类型分为基本数据类型和引用数据类型,基本数据类型里面又可以分为:整数型(byte、short、int、long)、浮点型(float、double)、字符型(char)、布尔型(boolean)。引用数据类型可以分为:类(class)、接口(interface)、数组。
以下是对整数型的介绍:
byte占1个字节(在内存中占8位),其数值范围为:-128到127);
short占2个字节(在内存中占16位),其数值范围为:-32768到32767);
int占4个字节(在内存中占32位),其数值范围为:-2147483648到2147483647;
long占8个字节(在内存中占64位),其数值范围为:-9223372036854775808到9223372036854775807。
浮点型:
float 在内存中占四个字节,32位。
double 在内存中占8个字节,64位。
注意:在Java程序中,我们定义浮点型数据的时候,系统会默认浮点型数据为double型,如果我们需要定义float型的变量,那就需要在定义的数据的初始值后面添加f。例如:
float sum=3.65f;
经过上面的介绍,会发现不同类型的数据所占内存的大小不一样,所以程序中一般不容许直接将一种类型的变量的值赋给另一种类型的变量。可以抽象想成一个装满东西的大盒子和一个装满东西的小盒子,和大盒子容积相等体积的东西没办法全部放入一个空的小盒子中,但是和小盒子容积相等体积的物品可以放在一个空的大盒子里。这样子,我们就引入了数据类型转换的概念。
在赋值过程中,就整数型而言,占内存小的变量直接放入到占内存大的变量中,不会出现问题。大的可以接受,这是隐式转换,在将大的类型变量的值赋给小的类型变量来存储的时候,会发生数据丢失,会出错,需要我们进行强制转换。例如:
float sum=123.25f,sum1;
double num=136.698,num1;
sum1=num;//会出错,需要写成sum=(float)num; 这是强制类型转换
num1=sum;//不会出错,虽然类型不同,但是内存占位够用,私下电脑直接进行转换
在我们进行强制类型转换时,需要注意一些问题:
1)只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
2)只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
3)只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
4)两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。
在整个程序运行的过程中,值能改变的值称作常量。
为什么要在程序中引入常量的概念呢?常量在有些程序中的作用非常大,例如:在一个商店,每个物品的价格都是固定的,如果厂家改动价格的话,只需要在这类物品的标价去改动即可,不需要挨个改变每个物品的价格。
常量的语法格式:
final 数据类型 常量名称=值;
//需要注意的是,常量在声明的时候必须赋初始值。
变量的定义:
double sum;
int num;
数据类型+变量名称,初始值可给可不给。
在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了操作方便,给这个空间取了个名字,称为变量名,内存空间内的值就是变量值。所以,申请了内存空间,变量不一定有值,要想变量有值,就必须要放入值。
1、算数运算符
我们常见的“+、-、*”与数学中的用法相同,不做单独介绍,
除法 “ / ”:不能整除的数字直接得商,没有小数的存在。例如:
int a=12;
int b=5;
int c=b/a; //c的值是2,不是2.4,只取整
取余 “ % ”:也称取模,左操作数除以右操作数的余数。例如:
int a=13;
int b=5;
int c=b%a; //c的值是3
++:操作数的值增加1。例如:
int a=13;
a++; //++在后的话,先用这个变量的值,用完了之后再+1。
++a; //两者的区别是,++在操作数前面的话,先加1再用这个变量的值。
- -:操作数的值减1。例如:
int a=13;
a--; //--在后的话,先用这个变量的值,用完了之后再-1。
--a; //两者的区别是,--在操作数前面的话,先减1再用这个变量的值。
实例代码:
public class Test0 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b) );
System.out.println("a - b = " + (a - b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
System.out.println("a++ = " + (a++) );
System.out.println("a-- = " + (a--) );
// 查看 d++ 与 ++d 的不同
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
}
}
运行结果:
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++ = 10
a-- = 11
d++ = 25
++d = 27
2、赋值运算符
“=” 与数学中的用法相同,就是对变量进行赋值操作。
“+=”:把左操作数的值和右操作数的值相加赋给左操作数。
“-=”:将左操作数减去右操作数,然后赋值给左操作数。
“*=”:将左操作数乘以右操作数,然后赋值给左操作数。
“/=”:拿左操作数除以右操作数,然后赋值给左操作数。
“(%)=”:拿左操作数取余右操作数,然后赋值给左操作数。
“<<=”:左移位赋值运算符。
">>=“右移位赋值运算符。
" &=”:按位与赋值运算符。
" | "按位或赋值运算符。
实例代码:
public class Test {
public static void main(String args[]) {
int a = 10;int b = 20;int c = 0;c = a + b;
System.out.println("c = a + b = " + c );
c += a ;
System.out.println("c += a = " + c );
c -= a ;
System.out.println("c -= a = " + c );
c *= a ;
System.out.println("c *= a = " + c );
a = 10;
c = 15;
c /= a ;
System.out.println("c /= a = " + c );
a = 10;
c = 15;
c %= a ;
System.out.println("c %= a = " + c );
c <<= 2 ;
System.out.println("c <<= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= a = " + c );
c &= a ;
System.out.println("c &= 2 = " + c );
c ^= a ;
System.out.println("c ^= a = " + c );
c |= a ;
System.out.println("c |= a = " + c );
}
}
输出结果:
c = a + b = 30
c += a = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a = 0
c ^= a = 10
c |= a = 10
3、关系运算符
“==”:检查左右两个操作数的值是否相等。
“!=”:检查左右两个操作数的值是否相等,不相等的话值为真。
“>”:如果做操作数大于右操作数,那么值为真。
“<”:如果左操作数小于右操作数,那么值为真。
“>=”:如果左操作数值大于等于右操作数值,那么值为真。
“<=”:如果左操作数值小于等于右操作数值,那么值为真
代码实例:
public class Test1{
public static void main(String [] args){
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
运算结果:
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
4、逻辑运算符
&&:逻辑与运算符,当且仅当两个操作数都为真时,条件才为真。
||:逻辑或操作符,任何两个操作数任何一个为真,条件为真。
!:逻辑非运算符,用来反转操作数的逻辑状态,如果条件为真,则逻辑非运算符将得到false。
代码实例:
public class Test2 {
public static void main(String args[]) {
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));
}
}
以上实例编译运行结果如下:
a && b = false
a || b = true!(a && b) = true
5、三元运算符
(A)?(B):(C) 表示A的条件成立的话,当前值为B,不成立的话当前值为C。
实例代码:
variable x = (expression) ? value if true : value if false
public class Test4 {
public static void main(String args[]){
int a , b;
a = 10;
b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b );
b = (a == 10) ? 20: 30;
System.out.println( "Value of b is : " + b );
}
}
以上实例编译运行结果如下:
Value of b is : 30
Value of b is : 20
6、运算符的优先级
我总结的是主要看括号,哈哈。
有两种:
if语句:
If语句的用语法如下:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
如果布尔表达式的值为true,则执行if语句中的代码块。否则执行If语句块后面的代码
代码实例:
public class Test5{
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("这是 if 语句");
}
}}
以上代码编译运行结果如下:
这是 if 语句
if语句后面可以跟else语句,当if语句的布尔表达式值为false时,else语句块会被执行。
语法
if…else的用法如下:
if(布尔表达式){
//如果布尔表达式的值为true
}
else{
//如果布尔表达式的值为false
}
代码实例:
public class Test6 {
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("这是 if 语句");
}else{
System.out.print("这是 else 语句");
}
}
}
以上代码编译运行结果如下:
这是 else 语句
switch语句:
switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
语法
switch语法格式如下:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
代码实例:
public class Test9 {
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("Excellent!");
break;
case 'B' :
case 'C' :
System.out.println("Well done");
break;
case 'D' :
System.out.println("You passed");
case 'F' :
System.out.println("Better try again");
break;
default :
System.out.println("Invalid grade");
}
System.out.println("Your grade is " + grade);
}
}
以上代码编译运行结果如下:
Well doneYour grade is C
三种主要的循环结构:
while循环:
while是最基本的循环,它的结构为:
while( 布尔表达式 ) {
//循环内容
}
只要布尔表达式为true,循环体会一直执行下去
代码实例:
public class Test10 {
public static void main(String args[]) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
}
运行结果:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
do…while循环:
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while循环和while循环相似,不同的是,do…while循环至少会执行一次。
do {
//代码语句
}while(布尔表达式);
**注意:**布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为true,则语句块一直执行,直到布尔表达式的值为false。
代码实例:
public class Test11 {
public static void main(String args[]){
int x = 10;
do{
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
}
运行结果:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
for循环(待续)