------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
java语言的基础组成
1.关键字
定义:被JAVA语言赋予了特殊含义的单词
特点:关键字中的所有字母都为小写
用于定义数据类型的关键字
class、interface、byte、short、int、long、float、double、char、boolean、vold
用于定义数据类型值的关键字
true、false、null
用于定义流程控制的关键字
If、else、switch、case、default、while、do、for、break、continue、return
2.标识符
a.在程序中自定义的一些名称
b.在26个英文字母大小写,数字:0-9符号:_$组成
c.定义合法标识符规则:
1不能以数字开头
2不能使用关键字
d.java中严格区分大小写
e.注意在起名时,为了提高阅读性,要尽理有意义。
标识符规则:
(由26个大小写字母,0-9,_和$符号组成)数字不可以开头,不可以
使用关键字。
包名: xxxyyyzzz全小写
类名,接口名: XxxYyyZzz 不同单词首字母大写
变量名,函数名 xxxYyyZzz 第一个字母小写,单词首字母大写
常量名 XXX_YYY_ZZZ 都大写但用_分开不同单词
系统默认整数为int 小数为 double
基本数据临行 1字节 byte(字节)-127-128
整数类型 byte shortint long 2字节 short char
浮点类型 floatdouble 4字节 int float
字符型char 8字节 long double
布尔型boolean
引用类型 class interface 数组([]) 1Byte=4byte=32位
类型转换:系统默认是可以从低位转到高位(即自动类型提升),这样不会损失精度。高位像低位转换必须强制转换,不然会编译失败。
但是如果是整数和小数在运算时候一般会自动转成小数类型(单位相同下)
Char类型也可以参加运算的,因为它的ascII表对应着相应的值是按这些值运算的
运算符 int x=323 x/100*100=300 因为两个int相乘结果还为int型又因为小数默认是double的 所以除完得3最后得300,终于明白为什么相除后把余数去掉的原因啦~~~! %模运算 是取余数
b=a++和b=++a的区别在于前者是先赋值再给a++后者是先给a自增再赋值其他情况雷同。
字符串数据和任何数据使用+都是相连接,最终都会变成字符串,一般出现在打印语句中
转义字符 通过\来转变后面字母或者符号的含义 \n换行 \b退格 \r 按下回车键
\t 制表符相当于tab键
赋值运算符 ints=3; s=s+2; s+=s;
s=s+2编译失败,因为加完是变成int型。无法赋值给short型
s+=2 编译成功,因为+=运算符在给s赋值是,自动完成了强制转换操作
逻辑运算符 & and(与) 两个都为真结果为真 如 x>3&x<6 (3<x<6)
| or(或) 至少一个为真结果为真
^ xor(异或)两边不一样结果为真
! not(非) 左边非真结果为假
&& and (短路,且) &和&&的区别运算方式都一样,但是&&的左边条件为假的时候右边条件就不用运算了,因为其结果必然为假,而&不管左边结果如何都要进行两次运算
!! or (短路,或) |和|| 同样的道理
位运算符 >>右移时最高位补什么由原有数据最高位而定。如果最高位为0,右移后用0补。如果最高位是1,右移后用1补空位.而>>>(无符号右移)不管最高位是什么,右移后,最高位都用0补
一个数异或同一个两次结果还是那个数,可以用于交换数据,加密等等。
例如:int n=3,m=4;交换n和m的值,不用第三方变量
n=n^m n=n^m
m=n^m m=n^m=(n^m)^m=n; m=n了
n=m^n n=m^n=m^(n^m)=(n)^(m^n)=m 所以就交换了
if和switch语句的选择:
如果判断的具体数值不多,而是符合byte,short,int,char这四种类型虽然两个语句都可以使用,但是建议使用switch语句,因为这样效率高些。
其他情况:对区间的判断,结果为boolean类型判断,使用if的更多些
While和do while的区别
前者只有条件满足才执行循环体,后者先执行一次循环体,才判断条件是否满足,即便是条件不满足都要执行一次循环体
continue语句:应用于循环结构 break应用于选择和循环结构
注:它两离开了应用范围,存在时没有意义的
它两单独存在的下面都不可以有语句,因为执行不到
continue语句是结束本次循环继续下次循环
标号的出现可以让它们作用于指定的范围
什么是函数
函数就是定义在类中的具有特定功能的一段独立小程序。也称为方法
如何定义一个函数:
1. 既然函数是一个独立的功能,那么该功能的运算结果是什么先明确
2. 在明确在定义该功能的过程中是否要未知的内容参与运算
函数的重载
重载的概念
在同一个类中,允许存在一个以上的同名函数,只要它们的参数或参数类型不同即可。
重载特点:
与返回值类型无关,只看参数列表。
重载的好处:
方便竞阅读,优化了程序设计。
数组的定义:
概念
同一种类型数据的集合,其实数组就是一个容器
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:元素类型[] 数组名= new 元素类型 [元素个数或数组长度]
int[] arr = new int[5];
格式2:元素类型[] = new 元素类型[]{元素,元素,…………}
int[] arr = new int[]{3,5,7,1,7}
int[] arr = {3,5,7,1,7}
内存结构
JAVA程序在运行时,需要在内存中分配空间。为了提高运算效率,对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值
实体中的变量都有默认初始化值
实体不再被使用,会在不确定的时间内被垃圾回收器回收。
New出来的实例都放在堆空间内。
Int [] x = new int[3];
X指向了这个数组,或引用了这个数组,只存储了这个数组的对应数组的首地址的值。
public class Leanr {
public static void main(String args[]) {
int[] x = new int[3];
System.out.print(x + "==" + x[0]);
}
}
数组在被定义后,里面的元素都有默认值,具体值依元素的数组类型而定。
两个引用指向同一个数组时,两个引用同时操作这个数组。
栈和堆的不同,栈自动释放,堆采用垃圾回收机制。