【Java学习之基础语法】

基础语法

数据类型

注意点:

1.char在java中可以与int混用,可以自动转换;byte、short、char在计算的时候一律自动转换为int进行计算;char只能自动转成int,和byte和short之间不存在自动转型

2.低等级的数据类型可以向高等级的数据类型自动转换,但高等级的转低等级的需要强转,如果强行用低等级的接收高等级的,会报错。

3.如果用的是二维运算符来运算,就不会出现类型不符合而报错,原因是java会自动转换类型(此时用什么接收,转换的就是哪个类型)

例如:

byte a = 10;
double b = 200.0;
a +=  b;

此时如果用a来接收最后的结果,那么就会自动转成byte类型,然后会由于数值溢出得到一个负数。如果用b接收最后结果,那就会转成double类型,不会存在异常

4.浮点数会存在精度问题

5.boolean不参与类型转换,包括强制

6.表达式中的类型提升会自动将类型提升到最大的那个

7.一旦表达式中存在任何一个变量,整个表达式都不能当做常量,编译器无法自动处理

8.仅仅声明的变量是无法使用的,编译器不会开辟内存空间

标识符

区分大小写、不能以数字开头、不能是关键字和保留字

可以用$和—,也可以用中文,Unicode 字符集中符号大于0xC0的所有符号都可以用

运算符

算术运算符

1.整型除以整型得到的结果会自动舍去小数部分

2.自增自减只能用于变量,如果在前面的话就表示先运算再赋值,如果在后面就是先赋值再运算

赋值运算符

1.二元的赋值运算符表示先进行计算之后再赋值

2.左移就是乘2,右移就是除2

3.二元运算符会自带强转,会出现精度丢失

比较运算符

返回一个布尔类型,注意与赋值运算符进行区分

逻辑运算符

短路:如果第一个结果就能得出表达式的值,那么就不需要继续向下判断了

实际开发中,直接使用短路的 &&、||

三目运算符

a > b ? a : b

通俗的理解:a大于b吗?是则返回a,不是则返回b

Scanner

在使用Scanner的时候,如果出现next()系列的方法和nextLine()混用,会出现因为判断的标志不同而导致扫描出现问题

Scanner sc = new Scanner(System.in);
sc.nextInt();
sc.nextLine();

先使用next()Int然后使用next()Line,这样就会造成后面的nextLine接收到回车后立马结束扫描;

nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行

究其原因:next()系列的方法只会读取数值,不会读取空格、换行符等符号,而nextline会读取前面留下的数据,这样就会将换行符传给后面的nextline导致运行结束

如果两个nextline连用的话,line会将换行也一起读取,就不会出现错乱了

不要将nextLine和next系列方法混用

转义字符

常用的:\b退格,\n换行,\r换行,\t就是TAB,

流程控制

break:中断

continue:继续(中断一次循环)

return:直接返回,结束方法

如果有嵌套,可以使用label

如果是在方法中使用if…else,那么一定要注意是否给出了所有情况下的返回值

方法重载

即同名方法;

一个类中的多个方法具有相同的方法名,但形参列表不同,这就是方法重载

形参列表(方法签名)不同的定义:

​ 形参数量不同/形参的数据类型不同/形参数据类型的顺序不同

一定要注意:和形参的名字无关,和返回值类型、修饰符无关,只看形参列表是否不同

方法的传参

Java中所有的方法都是值传递,如果传入的是基本数据类型,就会复制一份该变量的值在方法中,方法销毁,该复制值也会随之销毁;如果传入的是引用数据类型,会拷贝该引用数据类型指向的地址值,但不能修改引用的指向的地址值,可以修改该引用指向的对象,即改变对象的状态

数组

数组是随机访问,根据数组的首地址和下标,使用寻址公式可以计算出对应的内存地址

数组的内存空间是连续的

动态初始化:初始化时不给出具体值,数组中的元素都具有默认值

静态初始化:初始化时给出具体值

注意:不可以动静结合

数组一旦初始化完毕,长度就不可以更改

常见异常

1.下标越界

2.空指针

​ 当使用指向null的引用进行一系列操作时,就会出现空指针

长度为0和null的数组

​ 数组未初始化是无法使用的,但长度为0和null的数组可以认为是经过了初始化的

可变参数

​ 只能出现在形参列表的最后,本质上还是一个参数的数组,

格式: 数据类型… 变量名

JVM内存

:存放方法以及其中的局部变量

​ 每当执行一个方法,都会将该方法的栈帧压入栈中,方法执行完毕后,栈帧销毁,其中的局部变量也随之失效

:new出来的对象都存放在堆上,对应有地址值,用来给外界访问,引用数据类型引用的就是这个地址值

方法区:

本地方法栈:存放的是本地的方法,即操作系统提供的方法

程序计数器:记录当前执行的行数

你可能感兴趣的:(#,Java核心技术精选,java,学习,开发语言)