------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
标识符
1.在程序中自定义的一些名称。2.由26个英文字母大小写,数字:0—9,符号:_$组成
3.定义合法标识符规范:
数字不可以开头 不可以使用关键字
Java中严格区分大小写。注意:在起名字时,为了提高阅读性,要尽量有意义。
main不是关键字,但是被虚拟机识别的名称。
Java中的名称规范:
1.包名:多单词组成时所有字母都小写。xxxyyyzzz
2.类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz
3.变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单次首字母大写。xxxYyyZzz
4.常量名:所有字母都大写。多单词时每个单词用下划线连接。XXX_YYY_ZZZ
java中的注释格式:
1.单行注释 格式://注释文字
2.多行注释 格式:/*注释文字*/
3.文档注释 格式:/**注释文字*/
对应单行和多行注释,被注释的文字,作为纯文本存在,不会被JVM(Java虚拟机)解释执行。
对于文档注释,是Java特有的注释,其中注释的内容可以被JDK提供的工具javadoc所解析,生成一套以网页形式体现的该程序的说明文档。
常量与变量
1.常量表示不能改变的数值
2.Java中常量的分类:
整数常量,所有整数
小数常量,所有小数
布尔型常量,较为特有,只有两个数值 true、false
字符常量,将一个数字字母或者符号用('')标识
字符串常量,将一个或者多个字符用双引号标识
null常量,只有一个数值就是:null.
3.对于整数:Java有三种表现形式
十进制:0-9,满10进1.
八进制:0-7,满8进1,用0开头表示。
十六进制:0-9,A-F,满16进1,用0x开头表示。
二进制:0-1 ,满二进一
每个字节是由八个开关组成 二进制形式存储
ASCII编码表 编码表的由来 进制越大表现形式越短
3位2进制代表一位 八进制
4位2进制代表一位 十六进制 进制转换特点 之所以出现八进制、十六进制是为了更方便的表示数据。
负数的二进制表现形式(任何数据都可以用二进制表示)对应的正数二进制取反加1,负数的最高位都是1.(1是取反取来的)
取反:将二进制的1变成0,0变成1.
变量(黑马程序员)
1.变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和(数据类型)
该区域的数据可以在同一类型范围不断变化
2.为什么要定义变量?
用来不断的存放同一类型的常量,并可以重复使用
使用变量注意事项:
变量的作用范围(一对{}之间有效)
初始化值
定义变量的格式:
数据类型 变量名=初始化值;
注:格式是固定的,记住格式,以不变应万变。
理解:变量就如同数学中的未知数,
3.变量就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。
如何开辟内存空间呢?
通过明确数据类型、变量名称、数据来完成的。
4.java语言是强类型语言,对于每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。
同一区间内不能定义同名变量。
什么时候定义变量?
当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。
类型转换(黑马程序员)
类型的转换
byte b=3;
b=b+2;强类型导致编译失败(自动类型提升,小的向大的提升)
//强制转换
b=(byte)(b+2);(将(b+2)的和强制转换成byte类型在赋给b)
.算数运算符
运算符:
算数运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
三元运算符
class OperateDemo
{
public static void main(String[] args)
{
int x=4270;
x=x/1000*1000;
System.out.println(x);
}
}
取模:取模就是取余数
左边小于右边结果是左边
左边等于右边结果是0
右边是1,结果是0
有负数只看左边(被模数)
上下可以调出你之前在dos命令行输入的命令
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
转义字符(黑马程序员)
转义字符:通过\来转变后面字母或者符号的含义。
\n:换行 \b:退格 (相当于backspace) \r:按下回车键
\t:制表符(相当于Tab键)
在Linux系统中换行是由\n来表示的。
dos系统可以直接识别\n、换行。
Window系统,回车符是由两个字符来表示\r\n.
注意事项:转义符号要写在被转义字母或者符号的前面。
一个中文默认两个字节
char ='你';---ok的(char类型两个8位)
赋值和比较运算符(黑马程序员)
=、+=、-=、/=、*=、%=(赋值运算符)
class OperateDemo
{
public static void main(String[] args)
{
short s=4;
s=s+5;(编译失败,两次运算,运算完是一个int值)
s+=5;(编译通过,就是一次运算,有一个自动转换动作)
int a,b,c;
a=b=c=5;(同时给a,b,c赋值)。
}
}
比较运算符
注1:比较运算符的结果都是boolean型,也就是要么是true、要么是false。
注2:比较运算符"=="不能误写成"=".(System.out.println(3=4)是不可以的)
逻辑运算符(黑马程序员)
&:"雨" |:"或" ^:"异或"
逻辑运算符用于连接boolean类型的表达式。
x>3&x<6;(x大于3并且小于6)
true & true = true;
true & false = false;
false & true = false;
false & false = false;
&:只要两边的boolean表达式结果,有一个为false,那么结果就是false,只有两边都为true,结果为true。
true | true = true;
true | false = true;
false | true = true;
false | false = false;
|:两边只要有一个为true,结果为true,只有两边都有false,结果为false。
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^:就是和|有点不一样,当true^true=false;两边相同结果是false,两边不同结果是true。
!true(非真————假)
&和&&的特点:
&:无论左边是true是false,右边都运算
&&:当左边为false时,右边不运算
当左边为true时,右边运算
|和||的特点:
|:两边都参与运算 ||:当左边为true,右边不运算。
位运算符(左移右移)
<<:左移 >>:右移 >>>:无符号右移
注:位运算是直接对二进制进行运算。
<<:其实就是乘以2的移动的位数次幂
>>:就是除以2的移动的位数次幂 (都是以2的倍数为基数)
>>和>>>的区别?
>>:最高位补什么由原有数据的最高位值而定
如果最高位是0,右移后,用0补空位
如果最高位是1,右移后,用1补空位
>>>:无论最高位是什么,右移后,都用0补。
0视为假(false),1视为真(true)
一个数异或同一个数两次,结果还是那个数(加密算法,相当复杂,数据按照某一种规律加密)
位运算符(三元运算符)
格式:
变量=((条件表达式?)表达式1:表达式2;)
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
只要看到条件表达式,无论里面写的简单复杂,运算完的结果不是true就是false。
语句(if)程序流程控制1.判断结构 2.选择结构 3.循环结构
if语句三种格式:
1.if(条件表达式)
{
执行语句;
}
----------------------------------------------------------------
2.if(条件表达式)
{
执行语句;
}
else
{
执行语句;
} ---------------------------------------------------------------
3.if(条件表达式)
{
执行语句
}
else if(条件表达式)
{
执行语句;
}
......
else
{
执行语句;
}
if else结构 简写格式: 变量=(条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化if else代码
弊端:因为是一个运算符,所以运算完必须要有一个结果
语句(Switch)选择结构:
switch语句:
switch(表达式){
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
........
default:
执行语句;
break;(跳出)
}
执行顺序是固定的,但是default和case的定义位置是可以随意的。
if和switch语句很像,具体什么场景下,应用那个语句呢?如果判断的具体数值不多,而是符合byte,short,int,char这四种类型,虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。(JDK不断升级,到了 7.0以后对switch语句进行了增强,它不仅可以判断byte,short,int,char这四种类型,还可以判断字符串。5.0以后可以对枚举类型进行选择。)
循环结构...................................
循环结构分为while循环结构 do......while循环结构和for循环结构
while循环结构会不断的进行条件判断,只要条件满足,{}内的执行语句就会执行,直到条件不成立,循环结束,
while语句循环格式
初始化表达式
while(循环条件){
执行语句
}
例题:
class WhileDemo
{
public static void main(String[] args)
{
/*int x = 1;
while(x<=10)
{
System.out.println("x="+x);
x+=2;
}*/
int x = 1;
do
{
System.out.println("x="+x);
x++;
}
while (x<3);
}
}
do...while 循环结构
关键字do 后面{}中的执行语句是循环体,do while循环语句将循环条件放在了循环体的后面,这就是说,循环体会无条件的执行一次,然后再根据循环条件来决定是否继续执行
格式
do {
执行语句
}while(循环体);
for循环语句:
一般用在循环次数已知的情况下。。。
格式:
for(初始化表达式;循环条件;操作表达式) {
执行语句
}
例题
class Demo2 {
public static void main(String[] args) {
int sum = 0;
for (int x=1;x<=100;x++){
if (x%2==1) {
sum += x;
}
}
System.out.println(sum);
}
}
总结:
明确次数用for循环 不明确次数用while循环 循环体至少执行一次用do ......while循环
跳转语句:
跳转语句用于实现循环执行过程中程序流程的跳转,在java中跳转语句有break,continue语句,
break语句的作用是当条件不符合时结束循环体(跳出循环)。continue语句作用是终止本次循环继续下次循环
方法:
什么是方法:完成特定功能的代码块
方法的格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数2.....){
方法语句
return返回值
}
参数:分为实际参数 形式参数
实际参数就是实际参与运算的 形式参数是就是方法定义上的,用于接收实际参数的
注意:实际参数和形式参数的类型保持一致。
函数的一个重要特性——重载(override)
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数列表的个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便于阅读,优化了程序设计。
示例:
//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){returnx+y+z;}
//返回两个小数的和
double add(double x,double y){return x+y;}
什么时候用到重载?
当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。