Java语言基础

在学习前先了解本篇的结构:
在这里插入图片描述

一、Java主类结构

1.1 类

(1) Java是面向对象的程序设计语言,在Java中一切都是对象。
(2) Java程序的基本组成单元是。每一个应用程序必须包含一个main()方法 ,含有main()方法的类叫做主类。
在这里插入图片描述

  • 所谓方法,其实与C++中的函数的含义相同。
  • 通常将类的属性称为类的全局变量成员变量),将方法中的属性称为局部变量。即全局变量申请在类体中,局部变量申请在方法体中

举个例子:

public class hellojava {
	static String a = "Hello ";
	public static void main(String[] args) {
		String b = "Java!";
		System.out.println(a+b);
		}
	}

hellojava是主类的名字,它与文件名同名,大小写保持一致(Java严格区分大小写)
其中a为全局变量,b为局部变量(main()方法也是一种方法)

1.2 全局变量

(1) 在声明全局变量时,若没有对其初始化,Java会给它一个默认值,注意,这里仅仅只是对全局变量生效。
对应默认值如下:

基本类型默认值
booleanfalse
char‘\u0000’(NULL)
byte(byte)0
short(short)0
int0
long0L
float0.0f
double0.0d

1.3 主方法

publicstaticvoidmain(String[]args)
权限修饰符静态修饰符返回值修饰符main()方法的参数

二、基本数据类型

Java的基本数据类型如下所示:
在这里插入图片描述
C++的数据类型如下:
在这里插入图片描述

2.1 整数类型

(1) 在Java中,整数类型有3种表示形式:十进制八进制十六进制
(2) 根据所占内存不同,可分为 byteshortintlong 四种类型。

数据类型内存空间取值范围
byte8位-128~127
short16位-32768~32767
int32位-2147483648~2147483647
long64位-9223372036854775808~9223372036854775807

值得一提的是,在Java中所有的值都分正负,所以不存在C++中unsigned这种类型。另外,也没有long long和long double。
(3) 在赋值时要注意变量的范围,如对于long型值,若要赋给它一个大于int的最大值的值或小于int最小值的值时,需要在数字后面加上L或l。

long i = 2147483650L; 

(4) 区别于C++,在C++中布尔类型(bool)与int型是兼容的,所以以下代码可以在C++中使用:

int x = 1;
while(x)
{
	//...
}

而在Java中不能这样做,但可以这样做:

boolean x = true;
while(x){
	//...
	}

(5) 基本类型都有对应包装类,如 int 对应的 Integer。基本类型和包装类的转换由自动装箱和自动拆箱完成。(编译器帮你完成)

Integer x = 2;    //装箱
int y = x;    //拆箱

关于装箱与拆箱,后期在包装类中介绍。

2.2 浮点类型

数据类型内存空间取值范围
float32位1.4E-45 ~ 3.4028235E38
double64位4.9E-324 ~ 1.7976931348623157E308

(1) 默认情况下,浮点数被认为是double型,若要使用float型,需要在数值后面加f或F。
(2) 使用double型时,浮点数后的d或D可加可不加。
(3) 声明浮点数时必需在浮点数后加f或F,否则编译器认为这是double型而出错。

float f1 = 14.12f;
double f2 = 12.12d;
double f3 = 12.11;

2.3 字符型

(1) 字符型变量占用16位(2字节)的内存空间(因为Unicode编码占用2个字节)

char x = 'a';
//char x = 97 

(2) Java采用Unicode的编码方式,字符a在Unicode表的位置是97,区别与C++ AscII码 中字符a的位置。

  • 思考:字符型变量能否储存中文汉字?
    答案是能,因为Unicode编码的字符集包含了汉字(排除某些特殊的汉字没有被包含在其中)。

(3) 转义字符,与C++中的转义序列是同一个道理。

字符名称含义
1~3位八进制所表示的字符,如\123\ddd
4位十六位进制所表示的字符,如\u0052\uxxxx
换行符\n
水平制表符\t
垂直制表符\v
退格\b
换页\f
反斜杠\\
单引号\’
双引号\"

2.4 布尔类型

(1) 关键字:boolean
(2) 含义:true 或false

三、变量与常量

3.1 标识符与关键字

(1) 标识符就是你取的名字,如类名、变量名、方法名、数组名、文件名等。
(2) 合法的标识符由字母、下划线( _ )、美元符号($)和数字组成,它们的顺序是任意的,但标识符开头不能是数字标识符不能是关键字
以下标识符是合法的:

name
$page
user_name

以下标识符是非法的:

4u
String
user name

(3) 关键字:Java语言已经使用过的名字,不能作标识符使用。
下面是Java的部分关键字

shortintlongfloatdoubleboolean
byteifelsecontinuefordo
breakcaseswitchwhiledefaultchar
gotoreturnpublicthisprotectedstatic
classfinalfinallyimportpackageprivate

3.2 常量

(1) 常量即程序运行过程中不会改变的量,在Java中用final表示。

final double PI = 3.1415926;

(2) 若定义的final变量属于“成员变量”,则必须在定义的时候就赋初始值。

public class hellojava {
	final static int a = 1; //成员变量
	public static void main(String[] args) {
		final int num;
		num = 2; 
		//num = 3;  错误,只能赋值一次
		}
	}

3.3 变量的有效范围

(1) 成员变量在整个类中都是有效的,成员变量又可以分为静态变量与实例变量。

class var{
	int x = 1;  //实例变量
	static int y = 2;//静态变量
}
  • 静态变量与实例变量的区别?
  1. 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
  2. 在程序运行时的区别:
    2.1 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量
    2.2 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了
    2.3 实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

(2) 局部变量只在当前代码块中有效,当局部变量与成员变量同名时,成员变量将会被隐藏,而使用局部变量。

public class hellojava {
	static int a = 1;
	public static void main(String[] args) {
		int a = 2;
		System.out.println("a的值为"+a);
		}
	}

如图,成员变量被隐藏:
在这里插入图片描述

四、运算符

4.1 运算符

(1)赋值运算符:=
(2)算数运算符:+ - * / %
(3)自增与自减运算符:"++" 与" --"

  • 两者的操作对象必须是整型或浮点型的变量
  • ++ 与 - - 有两种情况,一种是前++(- -),另一种是后++(- -)
  • 区别何在?
int a = 1;
int b = a++;//先将a的值赋给5,然后a再加1
int a = 1;
int b = ++a;//a加1后再赋值给b

(4)比较运算符:> >= == <= < !=
(5)逻辑运算符:&& || !
(6)位运算符:

  1. 按位与 :&

  2. 按位或:|

  3. 按位取反:

  4. 按位异或:~

  5. 移位操作:^

    • << 左移
    • >> 右移
    • >>> 无符号右移
      注:移位运算符适用于byte、short、char、int 和 long
  • 计算2 * 8的值,可以用 2 << 3 表示,这种方法通过位操作,效率高。

(6)三元运算符:各位为 表达式?值1:值2 ,若表达式的值为真,则返回值1,否则返回值2。
如以下表达式的值为false:

boolean a = 2>3?true:false;

4.2 优先级

运算符的优先级决定了一个表达式运算执行的先后顺序,有时候忽略了优先级会使表达式出现超乎预期的结果。

优先级描述运算符
1括号()
2正负号+、-
3一元运算符++、- -、!
4乘除*、/
5加减+、-
6移位运算>>、<<、>>>
7比较大小>、>=、<、<=
8比较是否相等==
9按位与运算&
10按位异或运算^
11按位或运算
12逻辑与运算&&
13逻辑或运算
14三元运算符?:
15赋值运算符=

五、类型转换

低类型到高类型:byte < short < int < long < float < double , char < int < float
注意:

  • byte不能隐式转化为char
  • short和char之间不能相互转换
  • float和long之间不能相互转换

5.1 隐式类型转换

系统自动执行的转换,转换的方向总是从低类型到高类型。

  • 思考:
short a = 1;
a = a + 1;

short a = 1;
a += 1;

有什么区别
第一种方法钟a为short型,1为int型,所以a+1为int型,但原本a是short型,所以这样做编译器会显示错误。
第二种方法中的 “+=” 比较特殊,会对表达式进行特殊处理,故编译通过。

5.2 显式类型转换

与隐式类型转换相反,由程序员自己操作。当转换是从高精度到低精度时,必须使用显式类型转换。显式类型转换可能会有数据丢失甚至转换失败。
如:

int a = (int)12.12;
int b = (int)'d';
  • 当赋值时变量超过范围时,必须使用显式类型转换。
  • byte a = (byte)130;

六、代码注释与编程规范

6.1 代码注释

Java中有三种注释方法:

  • 单行注释
    如:
int a = 1;//a是个整型变量,它的值为1
  • 多行注释
    如:
int a = 1;
/*
		a是个整型变量,它的值为1
*/
  • 文档注释
    如:

/**
		文档内容
*/

6.2 编程规范

以下仅供参考:

  • 每条语句单独占一行,一条命令要以分号结束。

  • 声明变量时尽量一行一个变量声明,并添加注释。对于局部变量应该在声明时就初始化。

  • 对于关键的方法要多加注释。

  • 为方便日后维护,不要使用技术高、难懂、易混淆判断的语句。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值