Java概述
1990年,SUN公司推出了“Green计划”,由James Gosling领导设计了一门叫做Oak的语言,为了实现 智能设备,但并未发展成功,但这门语言留了下来。 1990年,由于互联网的流行,Oak语言经过改造,成为了现在的Java。所以,Oak就是Java语言的前身。
Java是一门跨平台、"半解释半编译"的“面向对象”语言。 Java有很多优点,尤其是这几点: 简单 ,安全 开源, 多线程, 半解释半编译, 面向对象。
Java代码中的注意事项
1.要写代码,必须先创建class,class称为类,是一个Java程序的基本组成单位
2.每个能够运行的Java程序,有且只有一个main方法,称为主方法/入口函数,是程序的起点
3.符号:
Java中的符号全部都是英文状态下的符号。可以在输入法中设置中文状态下使用英文标点
“{}”必须成对出现。用于定义类、定义方法和定义代码块
“[]”必须成对出现。用于定义数组、使用数组
“()"必须成对出现。用于表示方法的参数
“空格”用于分割关键字和代码。可以是一个空格,也可以是多个
“.”用于调用某个类或对象的属性和方法
“;"用于表示一句代码的结束,大括号后不需要加分号
换行和缩进:
在每出现一次大括号时,就要进行一次缩进
编程语言的命名规则
驼峰命名法
如果用多个单词描述一个内容,除首字母外,其他单词首字母大写。
如studentName、empId。
帕斯卡命名法
所有单词首字母全部大写
如StuendClass、EmpName
JAVA中的标识符
Java中的类名、方法名和变量名统称为标识符。
· 类名使用帕斯卡命名法
· 方法名和变量名使用驼峰命名法
· 命名时做到"见名知意"
这些要求不是强制的,属于开发人员约定俗成的内容。
Java中标识符的命名规则
· 标识符使用字母、数字、下划线和$组成
· 不能以数字开头
· 不能使用Java中的关键字(保留字)
JAVA中的数据类型
原始类型
整型
· byte字节
· short短整型
· int整型
· long长整型,赋值时在数字后加l或L
浮点型
· float单精度浮点型,赋值时在数字后加f或F
· double双精度浮点型
字符型
· char,赋值时可以是单引号引起来的字符或一个数字,这是数字是ascii中的数字或者是一个 转义字符
布尔型
· boolean
类型名 | 所占字节大小 | 范围 |
byte | 1 | 128~127 |
short | 2 | -32768~32767 |
int | 4 | -2147483648~2147483647 |
long | 8 | -2^63至2^63-1 |
float | 4 | -2^128到2^128 |
double | 8 | -1.798E308~1.798E308 |
char | 2 | 用单引号引起来的一个字符。在java中,不管是数字还是英文还是汉字, char都占用2个字节。因为Java编译器默认使用Unicode编码。 |
boolean | true/flase |
变量
定义变量
语法:数据类型 变量名;
可以同时定义多个变量。
给变量赋值
语法:变量名 = 值;
变量初始化
语法:数据类型 变量名 = 值;
运算符
算数运算符
符号 | 作业 | 说明 |
+ | 加 | 如果两个操作数都是数值型的数据,+用于计算。如果两个操作数有一端是字符串, +用于拼接字符串。 |
- | 减 | 只能用于数值型数据。 |
* | 乘 | 只能用于数值型数据。 |
/ | 除 | 只能用于数值型数据。如果两个整数相除,结果只保留整数部分(商)。 |
% | 取余 | 只能用于数值型数据。商一定是整数。 |
* 如果同时多个符号一起使用,遵循数学中的四则运算规则,先乘除,后加减。
* 运算时最终结果的数据类型,以所有参与运算的操作数中所占字节最大的类型为准
关系运算符
需要两个操作数参与 ,计算结果为布尔型boolean
符号 | 作用 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
== | 等于 |
逻辑运算符
符号 | 作用 | 说明 |
&& | and 与 | 符号两端需要两个表达式,判断如果都为true,整体结果则为true,如果有一端结 果为false,整体结果为false。 |
|| | or 或 | 符号两端需要两个表达式,判断如果都为false,整体结果则为false,如果有一端 结果为true,整体结果为true。 |
! | not 非 | 是一个单目运算符,只有一个表达式参与运算。"!表达式"表示对原表达式的结果 取相反值。 |
赋值与复合运算符
符号 | 作用 |
= | 赋值运算符。将符号右侧的内容赋值给符号左侧的变量。 |
+= | 复合赋值运算符。a+=3相当于a=a+3; |
-= | 复合赋值运算符。a-=3相当于a=a-3; |
*= | 复合赋值运算符。 a*=b+c相当于a=a*(b+c) |
/= | 复合赋值运算符。 a/=b+c相当于a=a/(b+c) |
%= | 复合赋值运算符。 a%=b相当于a=a%b |
复合赋值运算的流程是: 将符号两端的整体进行对应的算术运算后,将结果赋值给符 号左侧的变量中。
自增与自减运算符
符号 | 作用 |
++ | 将结果+1 |
-- | 将结果-1 |
只有一个操作数参与运算,称为单目运算符
a++或++a相当于a+=1或a=a+1。--同理。如果++或--独立成行使用,无论符号在前 在后,都将结果+1或-1。
符号在前,先+1或-1计算后再使用值
符号在后,先使用值后再+1或-1计算
条件运算符
三目运算符,有三个操作数参与。是一个简化版的双分支条件语句。
格式:表达式1?表达式2:表达式3
首先运算表达式1,如果结果为true,执行问号后的表达式2;
如果结果为false,执行冒号后的表达式3。
整个表达式的最终结果为表达式2或表达3。
运算符的优先级
小括号>>单目运算符>>算术运算符>>关系运算符>>逻辑运算符>>条件运算符>>赋值/复合赋值运算符
条件语句
if语句
单分支if语句
如果一件事情满足则执行,不满足什么都执行。
if(判断条件){//判断条件的结果为布尔值
条件满足时执行的代码
}
双分支if语句
如果一件事情有两种情况,满足执行某些内容,不满足则执行另一些内容
if(判断条件){
条件满足时执行的代码
}else{
条件不满足时执行的代码
}
switch语句
switch(变量){//要判断的变量,只能是非long整型、字符型char和字符串String和枚举类型
case 值:
//如果变量的值与当前case的值匹配,执行这里的代码
break;
case 值:
//如果变量的值与当前case的值匹配,执行这里的代码
break;
...
default:
//如果没有任何值与变量的值匹配,执行这里的代码
break;
}
*swtich小括号中的变量只能是非long的整型、字符型char、字符串String和枚举类型
*小括号中的变量类型要与case后的值的类型相匹配
*如果有某个case后的内容和变量值匹配,执行case后的代码,如果没有任何case匹配,执行 default后的代码
*break和default可以省略。如果不写break,在某个case匹配时,执行玩相应的代码后继续执行后 续case后的代码,直到遇到break或没有代码为止
*如果多个case后执行的内容一致,可以省略break,将统一要做的代码放在最后的case后
return关键字
· if语句中可以使用return关键字不再执行后续的代码。可以使用这一点将原本的嵌套改造成ifreturn的
· switch语句中,也可以使用return,但会造成switch语句之后的代码不执行,所以一般不在switch 语句中使用return;
循环
while循环
执行流程
先执行小括号中的内容,如果结果为true,执行大括号中的内容,再循环执行小括号中的内容,判断如 果为false则停止循环。
while(循环条件){//小括号中的条件结果为boolean值
满足循环条件时重复执行的代码
}
do - while循环
执行流程
先执行一次do大括号中的内容,再判断while小括号中的内容,如果成立,再次执行do大括号中的内 容,如果不成立,停止循环。
do{
满足循环条件时重复执行的代码
}while(循环条件);
while和do-while的区别
while循环可能一次都不执行,do-while循环至少会执行一次
for循环
执行流程
首先执行表达式1,再执行表达式2,如果表达式2的结果为true,执行循环体,再执行表达式3,再执行 表达式2判断,如果表达式2的结果为false,结束循环
//表达式1为定义循环变量
//表达式2为判断循环条件
//表达式3为更新循环变量
for(表达式1;表达式2;表达式3){
循环体
}
break和return,continue
所有的循环都可以使用break和return停止循环。
break是停止循环后,继续执行循环之外的内容。
return是结束方法,不再执行return之后的内容。
在循环语句中,使用continue,可以停止本次循环,不再执行continue之后的代码,直接进行下一次循 环。
数组
一组类型相同的数据的有序集合。
定义数组
语法:数据类型[] 数组名; 或 数据类型 数组名[];
定义数组后,如果不初始化数组,数组无法使用。
数组初始化
语法:数组名=new 数据类型[数组大小];
定义数组的同时初始化
语法:数据类型[] 数组名 = new 数据类型[数组大小];
//定义数组,如果数组未初始化,不能使用
int[] score;
//也可以这样写,但是不建议
//int score[];
//数组初始化
//定义一个保存数组的变量nameList
String[] nameList;
//在内存中申请一块连续空间,将这个空间的地址保存到变量nameList中
nameList=new String[10];
//定义数组的同时初始化
double[] salary = new double[30];
给数组赋值
动态赋值
通过数组名[索引]给数组中某个位置赋值
静态赋值
在定义数组的同时赋值 如:
数据类型 [] 数组名 = new 数据类型[]{元素1,元素2,...}
String[] nameList = new String[]{"小明","王海","刘希"};
数据类型 [] 数组名 = {元素1,元素2,...}
String[] nameList = {"小明","王海","刘希"};
****
· 数组一旦初始化后,数组大小不能改变,其中的元素类型要统一
· 数组的索引范围是[0,数组大小-1],使用时不能超出范围。在编译时无法识别是否超出数组索 引, 但运行时会抛出"数组索引溢出"异常
· 数组一旦初始化后,如果没有赋值,默认有初始值
总结
刚刚开始接触java这门语言,从了解它的由来,发展,再到自己下载,安装,配置环境变量再到了解java程序的运行流程,从最开始学习数据类型到变量、运算符、再到条件语句中的if语句、switch语句再到循环语句中的while语句、do-while语句和for循环语句再到数组。经过这一周的学习,让我对Java有了初步的了解,更明白了自身的弱点,发现学习没有什么取巧的方法,只有多敲多练,正所谓好记性不如烂笔头。