欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java一些基础知识介绍

程序员文章站 2022-07-10 17:50:27
public class helloword{ public static void main(String[] args){ System.out.println("hello world");}}1.注释// 行注释/* */ 多行注释2.上述语法解释第一行:public class 后面代表定义一个类的名称,类是java源代码中的基本组织单位第二行:固定写法,代表main方法,表示程序执行的起点第三行:表示打印输出语句3.关键字特点:(......

目录

1.注释

2.上述语法解释

3.关键字

4.标识符

5.常量

6.数据类型

7.变量

8.数据类型转换

9.数字和字符的对照关系(编码表)

10.运算符

11.运算符优先级

12.方法

 

public class helloword{
    public static void main(String[] args){
	    System.out.println("hello world");
	}
}

1.注释

// 行注释

/*   */ 多行注释

/**  */可以用来自动生成文档

2.上述语法解释

第一行:public class 后面代表定义一个类的名称,类是java源代码中的基本组织单位

第二行:固定写法,代表main方法,表示程序执行的起点

第三行:System.out.println表示打印输出语句

3.关键字

特点:(1)完全小写的字母;(2)在增强版的记事本中(例如notepad++)有特殊颜色

4.标识符

定义:程序中,定义的类的名字、方法的名字等等都是标识符

命名规则:可以包含英文大小写字母、0-9数字、$、_下划线。但是不能以数字开头,同时标识符也不能是关键字,不能和关键字重复。

命名规范:(1)类名规范使用大驼峰式:首字母大写后面每个单词首字母都是大写;(2)变量名规范使用小驼峰:首字母小写后面每个单词首字母都大写;(3)方法名规范也是用小驼峰。

5.常量

定义:在程序运行期间,固定不变的量。

分类(1)字符串常量:凡是用双引号的部分称为字符串常量。(2)整数常量,直接写上的数字没有小数点。(3)浮点数常量:直接写上的数字,有小数点。(4)字符常量:凡是用单引号引起的单个字符(有且只有一个字符,不能是串,也不能为空字符),就叫做字符常量。(5)布尔常量:只有两种取值true和false。(6)空常量:null,代表没有任何数据。

6.数据类型

大致分为基本数据类型和引用数据类型。

基本数据类型:四类八种数据类型

整数型:byte(1个字节)  short(2个字节)  int(默认,4个字节)  long(8个字节)

浮点型:float(4个字节)  double(默认,8个字节)

字符型:char(2个字节)

布尔型:boolean(1个字节)

引用类型:

字符串:

数组:

类:

接口:

Lambda

注意:(1)字符串不是基本数据类型,而是引用类型。(2)浮点数可能只是一个近似值,不是一个精确数。(3)数据范围与字节数不一定相关,例如float数据范围比long更加广泛,而long是8字节。 (4)浮点数默认类型是double,如果一定要使用float类型,需要加入后缀F;如果是整数,默认是int类型,如果一定要使用long类型,需要加上一个后缀L;都推荐使用大写字母后缀。

7.变量

定义:程序运行期间,内容可以发生改变的量。

创建一个变量并且使用的格式:数据类型  变量名称 = 数据值   // 在创建一个变量的同时,初始化值。

注意(1)变量名不可重复(2)对于float和long类型来说,字母后缀F和L不能丢掉。(3)如果使用byte和short数据类型的变量,那么右侧的数值范围不能超过左侧类型的范围。(4)没有进行赋值的变量不能直接使用,一定要赋值之后才能使用。(5)变量不能超出作用域范围。作用域:从定义变量的一行开始,一直到所属的大括号结束为止。(6)可以通过一条语句创建多个变量,但是一般情况不推荐这么写。

8.数据类型转换

当数据类型不一样时,会发生数据类型转换,有自动类型转换(隐式)和强制类型转变换(显式)。

自动类型转换:

(1)特点:代码不需要处理,自动完成。(2)规则:数据范围从小到大 

        示例:float n = 421L; // 左边是float类型,右边是long类型,不一致;long--->float,符合数据范围从小到大的要求,这一行发生了数据自动转换,成功。

强制数据转换:

(1)特点:代码需要特殊的格式处理,不能自动完成。(2)格式:范围小的类型  范围小的变量名 = (范围小的变量名)原本范围大的数据  

         实例:int num = 100L;  // 左边是int类型,右边是long类型,不一致; long--->int,不是从小到大,不能发生自动类型转换,会报错。

                   int num = (int) 100L;  // 不会报错,强制转换成功。

注意:(1)强制类转换一般不推荐使用,因为有可能发生精度损失、数据溢出。(2)byte、short、char这三种数据类型可发生数学运算,例如加法。(3)byte、short、char这三种数据类型在运算的时候,都会被首先提升成int类型,然后再计算,也就是说运算结果都变为int类型,byte + byte- ->int,short + short- ->int,byte + short- ->int,char + char --> int 等。

编译器的优化:(1)对于byte/short/char三种数据类型,如果右侧赋值的数值没有超过范围,那么javac编译器会自动隐含的补上(byte)(short)(char);如果右侧数值超过范围那么编译器报错。(2)再给变量赋值的时候,如果右侧的表达式全都是常量,没有任何变量,那么编译器Javac将会直接将若干个常量表达式计算得到结果。例如short result = 5+8;等号右边全是常量,没有任何变量参与运算,在编译之后得到的.class字节码文件当中相当于【直接就是】:short result=13;右侧的常量运算结果数据,没有超过左侧范围,所以正确。这称为“编译器的常量优化”,但是注意:一旦表达式中有变量参与,就不能进行这种优化了。

public class Demo2Operator{
	public static void main(String[] args){
		byte a=8;
		byte b=5;  // 即使右边的数字5默认是int类型,但是没有超过byte数据范围,所以编译器会进行优化,隐式的添加强制转换。
		byte c=128; // 报错,因为数值超过了byte的数据范围,编译器报错。
		byte result1=8+5;  // 得到的是13,因为时常量数值的直接相加
		byte result2=a+b;  // 报错,因为byte类型运算会直接提升为int类型,这里没有强制转换。
	}
}

9.数字和字符的对照关系(编码表)

ASCII码表:American Standard Code for Information Interchange 美国信息交换标准代码

Unicode码表:万国码,也是数字和符号的对应关系,开头0~127部分和ASCII码一样,但是从128开始包含更多字符。

几个特殊的码:48-‘0’,65-‘A',97-‘a’

10.运算符

运算符:进行待定操作代的符号,例如+

表达式:用运算符连起来的式子叫做表达式,例如20+5

(1)算术运算符:+、-、*、/、++、--、%

除法/:对于整数表达数来说,整数除以整数,结果仍是整数,只看商,不看余数。

取模%:只有对于整数除法来说,取模运算才有意义。

注意:一旦运算中有不同类型的数,那么结果将会是数据类型范围大的那种,eg:int+double---->double+double--->double,但是不要忘记byte/short/char在运算的时候都会自动提升为int。

加号“+”常见的三种用法:(1)对于数值来说,就是加法。(2)对于字符类型char来说,在计算之前,char会被提升为int,然后再计算。char类型字符和int类型数字之间的关系表:ASCII和Unicode。(3)对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串的连接操作。任何数据类型和字符串进行连接时,结果都会变成字符串。eg: String tt="hello";  System.out.println(tt+20);  // hello20  System.out.println(tt+20+30);  // hello2030     System.out.println(tt+(20+30)); // hello50

自增/自减运算符:写在变量名称之前或者之后,eg:++num或者num++

使用方式:(1)单独使用,不和其他任何操作混合,自己独立成为一个步骤。(2)混合使用,和其它操作混合,例如与赋值混合或者打印操作混合等。

使用区别:(1)在单独使用时,前++和后++没有任何区别。(2)混合使用时,<1>如果是前++,那么这个变量立刻加1,然后拿着结果进行使用。【先加后用】<2>如果是后++,那么首先使用这个变量本来的数值,然后再让变量加1。【先用后加】

注意:只有变量才能使用自增自减运算符,常量不可发生改变,所以不可用。

public class DemoOperator{
    public static void main(String[] args){  
		//与打印操作混合使用
        // 混合使用,前++,先加后用
		int m=10;
        System.out.println(++m);  //11
        System.out.println(m);  //11
        System.out.println("----------------------------");
		// 混合使用,后++,先用后加
        int n=30;
        System.out.println(n++); // 30
        System.out.println(n); // 31
		System.out.println("----------------------------");
		//与赋值操作混合使用
		// 前--,先减后用
		int num1 = 40;
		int result1 = --num1;
		System.out.println(result1);  // 39 
		System.out.println(num1);  // 39
		System.out.println("----------------------------");
		// 后--。先用后减
		int num2=50;
		int result2=num2--;
		System.out.println(result2);  // 50 
		System.out.println(num2);  // 49
		int x=10;
		int y=20;
		int result3=++x + y--;
		System.out.println(result3);  // 31
		System.out.println(x);  // 11
		System.out.println(y);  // 19
	}
}

(2)赋值运算符

基本运算符和复合运算符

基本运算符:就是一个等号“=”,代表将右侧数据赋值给左侧变量

复合运算符:+=,-=,*=,/=,%=

注意:(1)只有变量才能使用赋值运算符,常量不能使用。(2)复合运算符其中隐含了一个强制类型转换。

public class Demo1Operator{
	public static void main(String[] args){
		byte num = 8;
		/*
		num = num +1
		num = byte + int
		num = int + int
		num = int
		num = (byte)int
		*/
		num +=1;
		System.out.println(num); // 9
	}
}

(3)比较运算符

==,>, <, >=, <=, !=

注意:(1)比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false。(2)如果进行多次判断,不能连这写。数学中有这种写法如1<x<3,但是程序中不允许这种写法,编译报错,所以要拆开,使用逻辑运算符连接拆开的判断式子。

(4)逻辑运算符

&&, ||, !

注意(1)&&和||具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将【不再执行】,从而节省一定的性能。(2)逻辑运算符只能用于Boolean值。(3)与、或需要左右各一个Boolean值,但是取反只要有唯一的Boolean值即可。(4)与,或这两种运算符,如果有多个条件,可以连续写。对于1<x<3的情况应该拆开两个部分,然后使用与运算符连接起来,int x=2; 1<x&&x<3;

(5)三元运算符

一元运算符:只需要一个数据就能操作的运算符,例如:取反,自增,自减。

二元运算符:需要2个数据就能操作的运算符,例如:加法,赋值。

三元运算符:需要3个数据就能操作的运算符,二者选其一。

格式:数据类型 变量名称 = 条件判断 ? 表达式A:表达式B;

流程:首先判断条件是否成立,如果成立为true,那么将表达式A的值赋值给左侧的变量;如果不成立为false,那么将表达式B的值赋值给左侧的变量。

注意(1)必须同时保证表达式A和表达式B都符合左侧数据类型的要求。(2)三元运算符的结果必须使用。

(6)位运算符

按位模式:&(按位与), |(按位或), ^(按位异或xor), ~(按位非)

按位移动:>>,<<, >>>

11.运算符优先级

12.方法

定义一个方法的格式:public static void 方法名称() { 方法体;}

注意(1)方法定义的先后顺序无所谓。(2)方法的定义不能产生嵌套包含关系。(3)方法定义好了之后不会执行,如果要执行一定要进行方法的调用。

本文地址:https://blog.csdn.net/zz2230633069/article/details/109627186

相关标签: Java