一,标识符
(凡是看可以自己起名字的地方都可以叫做标识符,包名 ,类名,接口,变量, 常量等)
二,关键字
(已经被定义的词,命名不能用这些词)
51+2个保留字=53个关键字(java的关键字都是小写的!!goto和const为保留字)
三, 修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 : default, public , protected, private
- 非访问控制修饰符 : final, abstract, strictfp
后面详细介绍
四,Java基础数据类型
4.1,常量
(注意;布尔常量只有true和false,null常量只有一个值null)
4.2 变量
本质: 变量有两个 概念,一个是 变量的名字,一个是变量的值,即内存中的这一小块区域是有名字的,通过名字
来访问着一小块区域中的值。
例如:
4.3 变量的分类
局部变量:在类,方法中,它是在栈上分配的,没有默认值,必须初始化才能使用。
全局变量:又叫实例变量,在类中,方法语句块之外,有默认值,一般情况下将实例变量设为私有可以再方法,构造方法中引用
数值型默认值为0,布尔型默认值为false,引用型默认孩子为null。
类变量:声明为静态属性的变量,在类中,方法语句块之外必须有static修饰,有默认值,它一般被声明为常量,即被public,private,final修饰的变量
存储在静态存储区( 又叫方法区),其变量名一般为大写字母。
实例变量 与类变量的 区别:
1,存储位置不同,实例变量存在堆或者栈中,类变量存储在方法区。
2,生命周期不同。静态(类)变量在加载类过程中优先加载,类似于常量,其生命周期取决于类的生命周期;实例变量在创建实例时才创建,它的生命周期取决于实例的生命周期。
3,引用对象不同。实例变量必须new对象调用,类变量属于这个类的所有对象可以直接通过类名调用,也可以new对象调用。
4,使用方法不同&&,一个类只能有一个同名静态*(类)变量,无论是通过类或者任何一个实例对静态变量重新赋值,结果都是一样;而一个类创建多少个实例就会有多少个同名实例变量,各实例变量存储空间不同,对其中一个实例变量重新赋值不影响其它实例的同名变量。
例如:
- public class Test{
- public static int a = 0;
- public int b= 0;
- public Test(){
- a++;
- b++;
- System.out.println("a=" + a+ ",b=" + b);
- }
- public static void main(String[] args) {
- Test aaa=new Test();
- Test bbb=new Test();
- }
- }
输出结果为:a=1,b=1;
a=2 , b=1;//这里的a与第一次的a是同一个a因为一个类中类变量只有一个同名类变量,而b为实例变量,可以有多个,但每一个都不相同。
五,Java数据类型讲解
Java数据类型在内存中的存储:
1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;
2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;
区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念).
正数在计算机中总是以原码存储的,
负数是以不补码存储的,就是负数的绝对值的原码转为二进制在按位取反后再加1。
例如:10与-10
10 的原码是 0000 1010
-10:先取反1111 0101再加1后为1111 0110此为-10补码,在计算机中代表-10
注意:
1,boolean型只有两个值true和false,不允许用0或非0的整数代替(这与c语言不同)。
2,字符型:(1)Java字符使用Unicode编码,每个字符占两个字节即16个比特,所以字符型数据可以用十六进制编码来表示
char cc='\u0061'; 表示\u后面的0061是一个十六进制的字符。Unicode编码又分为两种,一种是Utf-8,另一种是Utf- 16。JAVA所采用的是Utf-16,每一个字符占2个字节,任何国家的文字放到Unicode里面都是占2个字节。
(2)java 语言中运动徐使用转义字符 '\' 将其后面的内容转变成其他含义。char c='\n'; c表示换行符。
(3)char的默认值是'\u0000',即为空。
3,整数类型:整数类型数据默认为int(0), 每种整数类型都有固定的范围
八进制以0开头,十六进制以0x和0X开头
数据范围的本质
4浮点类型
5基本数据类型之间的相互转换
l
六,运算符
1,算数运算符 :取模%结果的正负取决于被除数。例如-10% 3=-1 10%3=1; 10%-3=1;(10除以3)
2逻辑运算符:(1)注意&&与||称为短路逻辑运算符,例如逻辑与&& boolean b = (a<4)&&(a++<10);但是当得到第一个操作 false时,其结果就必定是false,这时候就不会再判断第二个操作了。逻辑||相同。
(2)&也称为逻辑与,它无论其那面操作结果如何。,都会执行后面的操作,逻辑|相同。
(3)异或^ a^b即当且仅当a和b有一个为TRUE时结果才能为真。
3关系运算符
4位运算符:
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
A=0011 1100 B=0000 1101
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是0,则结果为0,否则为1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位补运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
注释;(1)左移一位相当于乘以2的1次方, 右移一位相当于除以2的1次方。 当奇数左移的时候,直接忽略余数。
例如:13<<1=6 13—1101 6—0100
'\u0000' |