基础语法篇

简介: 基础语法篇

基础语法


数据类型

注意点:


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出来的对象都存放在堆上,对应有地址值,用来给外界访问,引用数据类型引用的就是这个地址值


方法区:


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


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


相关文章
|
5月前
|
编译器 C语言 C++
|
6月前
|
Java
基础语法一
基础语法一
33 2
|
6月前
|
Java
基础语法二
基础语法二
33 1
|
存储 安全 编译器
C++超基础语法
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
|
6月前
|
存储 C# 开发者
C#基础语法
C#基础语法
34 0
|
6月前
|
存储 编译器 C++
C++基础语法
C++基础语法
54 0
|
安全 编译器 程序员
【C++】C++基础语法(下)
C++基础语法呢,有非常多的细节,需要大家慢慢来摸索,仔细的回顾,反复的复习
74 1
|
编译器 C语言 C++
【C++】C++基础语法(上)
C++基础语法呢,有非常多的细节,需要大家慢慢来摸索,仔细的回顾,反复的复习
100 1
|
编译器 Linux C语言
|
编译器 C语言 C++