java一些基础知识介绍
目录
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
上一篇: 主机名和名称解析