Java主类结构
Java是面向对象的语言。Java程序的基本组成单元是类。类中包含属性和方法。每一个应用程序都必须包含一个main()
方法。含有main方法的类称为主类。
public class Main {
static String s1 = "你好";
public static void main(String[] args){
String s2 = "Java";
System.out.println(s1);
System.out.println(s2);
}
}
包声明
一个Java程序由多个类组成。语句package Number
声明类所在的包
成员变量和局部变量
通常将类的属性称为类的全局变量(成员变量)。方法中的属性称为局部变量。全局变量声明在类体中,局部变量声明在方法体中。
基本数据类型
Java中有8种的基本数据类型来存储数值、字符和布尔值。
整数类型
整数类型用来存储整数数值,即没有小数部分的数值。可正可负。整数在Java中有3种表示形式:十进制、八进制、十六进制。
- 10进制 (120、0、-127)
- 8进制 (0123,-0123) 8进制必须以0开头
- 16进制 (0x25 0xb01e) 必须以0x或0X开头
整形数据根据它所占内存的大小,可分为byte、short、int、long4种类型。具有不同的取值范围。
需要注意变量的取值范围,超出范围就会报错。对于long型值。若赋给的值大于int的最值,则需要在数字后面加L表示为长整数。
浮点类型
浮点类型表示有小数部分的数字。Java中分为单精度浮点(float)和双精度浮点(double)。它们具有不同的取值范围,如图所示
默认情况下,小数会被视为double
型。若使用float型小数,需要在后面添加f。
字符类型
- char型
字符类型(char)用于存储单个字符,占用16位(2个字节)的内存空间。在定义字符型变量,要以单引号表示。如’s’表示一个字符,"s"表示一个字符串。
使用char可以定义字符变量
char c = 'a';
char z = 43;
- 转义字符
转义字符是一种特殊的字符变量,它以反斜杠""开头,后跟一个或多个字符。转义字符具有不同于字符原有的意义。
布尔类型
通过boolean来定义布尔类型,只有true和false两种值。
变量和常量
在程序执行过程中,值不能被改变的量称为常量,值能够被改变的量称为变量。变量与常量的命名都必须使用合法的标识符。
Java中的标识符由任意顺序的字母,下划线,美元符号组成,并且第一个字符不能是数字。
声明变量
变量的使用是程序设计中一个重要的环节。定义变量就是告诉编译器这个变量的数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。在程序运行过程中,空间中的值是变化的。这个内存空间就称为变量。为了便于操作,给这个空间取个名字,称为变量名。
声明变量的时候可以是没有赋值,也可以是直接赋给初值。
声明变量,实例代码如下:
int age;
char char1 = 'r';
由上图可知,系统的内存可以大致分为3个区域。即系统(OS)区、程序区(Program)和数据区(Data)。当程序执行时,程序代码会加载到内存中的程序区,数据暂时存储在数据区中。当执行此代码时,会在数据区配置空间给出这两个变量。
声明常量
在程序执行过程中一直不能被改变的量称为常量,通常也称为’final变量’。常量在整个程序中只能被赋值一次。在为所有的对象共享值时,常量是非常有用的。
在Java中声明一个常量,除了要指定数据类型外,还需要通过final
关键字进行限定。常量名通常使用大写字母,但这不是必需的。
当定义的final变量属于类的成员变量的时候,必须在定义的时候就设定它的初值,否则会发生编译错误。
final double PI = 3.1415926;
变量的有效范围
变量的生命周期指的是代码能够范文该变量的区域,若超出该区域,编译时会发生错误。在程序中,一般会根据变量的有效范围分为"成员变量"和"局部变量"。
- 成员变量
在类体中所定义的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可以分为两种:静态变量和实例变量。
class var{
int x = 45; //实例变量
static int y = 90; //静态变量
}
其中x为实例变量,y为静态变量(也称为类变量).静态变量使用static
修饰
静态变量的有效范围可以跨类,甚至可以达到整个应用程序之内。能够直接以"类名.静态变量"的方式在其他类中使用。
static关键字
被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。
被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
2. 局部变量
在类的方法体内定义的变量称为局部变量了,局部变量只在当前代码块中有效。
当方法被调用时,Java虚拟机为方法中的局部变量分配内存空间。方法调用结束后,会释放方法中局部变量占用的内存空间,局部变量也将会销毁。
局部变量可以与成员变量同名,此时成员变量将会被隐藏,也就是成员变量在此方法中暂时失效。
class var{
int x = 45; //成员变量
public static void main(String[] args){
int x = 54; //局部变量
}
}
运算符
赋值运算符
赋值运算符以"=“表示,它是一个二元运算符。
若一个表达式中含有两个以上的”=“运算符,会从最右方的”="开始处理。
int a = 10;
int b = 5;
int c;
c=b=a+4;
算术运算符
算术运算符有加减乘除和取余数
需要注意的是-1对2取余数为-1.
自增和自减运算符
++a和a++的区别在于
- ++a是使用变量a之前,先使a的值+1
- a++是使用变量a之后,再使a的值+1
逻辑运算符
需要注意的是&&(||)和&(|)的区别
- 都可以作为逻辑与的判断
- &&(||)会有一个短路的功能
- &(|)可以用在位运算中
位运算
整数在内存中以二进制的形式存在。如int型变量7的二进制表示为
00000000 00000000 00000000 00000111
最高位是符号位,负数用补码表示。
按位与
按位与的运算表示为&。运算法则为:若整数a、b对应位都是1,结果位才是1。否则是0。
按位或
按位或的运算表示为|。运算法则为:若整数a、b对应位都是0,结果位才是0。否则是1。
按位取反
按位取反的运算表示为!。运算法则为:若整数a对应位是0,结果位是1。否则是0。
按位异或
按位或的运算表示为^。运算法则为:若整数a、b对应位相同,结果位是0。否则是1。
移位操作
Java中的移位运算符有以下3种。
- <<左移
-
右移
-
无符号右移 无论最高位是0还是1,左侧被移空的高位都填入0.
数据类型转换
隐式数据类型转换
类型转换用于将一个值从一种类型转换为另一种类型。如果从低精度转换为高精度,永远不会移除。高精度向低精度转换有可能丢失信息或者失败。
从低级类型到高级类型的转换,系统自动进行。称为隐式转换。
精度从低到高可以排列为byte<int<long<float<double
显式数据类型转换
当把高精度变量的值赋给低精度的变量的时候,必须使用显式(强式)数据类型转换。
(int)3.43
(long)456.5F
(int)'d'