java基础语法笔记

Java学习

Java保留关键字


abstractconstfinallyIntpublicthis
booleancontinuefloatinterfacereturnthrow
breakdefaultforlongshortthrows
bytedogotonativestatictransient
casedoubleifnewstrictfptry
catchelseimplementspackagesupervoid
charextendsimportprivateswitchvolatile
classfinalinstanceofprotectedsynchronizedwhile

数据类型

基本数据类型(primitive type)

数值类型
整数类型
  • byte 占1个字节 范围:-128~127
  • short 占2个字节 范围:-32,768~32,767
  • int 占4个字节 范围:–2,147,483,648 ~ 2,147,483,647
  • long 占8个字节 范围:–9,223,372,036,854,775,808 ~9,223,372,036,854,775,807

整数拓展:二进制0b 八进制0 十六进制0x

浮点类型
  • float 占4个字节 范围:3.4E–038~3.4E+038
  • double 占8个字节 范围:1.7E–308~1.7E+308
字符类型
  • char 占2个字节 范围:0~65,536
bolean类型

​ 占一位,其值只有true和false两种

引用数据类型(reference type)

  • 接口
  • 数组

类型转换

低—————>高

byte,short,char->int->long->float->double

强制转换(高到低):变量名前面加(你要的类型)

自动转换(低到高):直接 高 i = 低 i

注意点
  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干类型
  3. 在把高容量转换带低容量的时候,强制转换
  4. 转换的时候可能会存在内存溢出,或者精度问题

eg: int a; int b; long c = a*b;(先运行再转换)

应该是:int a; int b; long c = a*((long)b);

变量

在Java中,所有的变量必须先声明再使用。基本的变量声明方法如下:

type(类型) identifier(名称) = value,[identifier [=value] …] ;

变量的命名规范

  • 所以变量、方法、类名:见鸣知意
  • 类成员变量:首字母小写和驼峰原则:除了第一个单词,后面的单词首字母大写 lastName
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线 MAX_VALUE
  • 类名:首字母大写和驼峰原则 GoodMan
  • 方法名:首字母小写和驼峰原则 runWay()

运算符

算术运算符
操作符描述
+加法
-减法
*乘法
/除法
++自增(++A,先自增再进行表达式运算;A++,表达式运算完后再自增)
自减(同上)
关系运算符
运算符描述
==(相等)检查左右两个操作数是否相等,相等为真,反之为假
!=(不相等)检查左右两个操作数是否相等,不相等为真,反之为假
>(大于)检查左操作数是否大于右操作数,成立为真,反之为假
<(小于)检查左操作数是否小于右操作数,成立为真,反之为假
>=(大于等于)检查左操作数是否大于等于右操作数,成立为真,反之为假
<=(小于等于)检查左操作数是否小于等于右操作数,成立为真,反之为假
位运算符(得转化二进制)
操作符描述
&(按位与)对应位全是1才为1,否则为0
|(按位或)全0才0,否则1
^(按位异或)相同为0,否则为1
~(按位非)取反
<<(按位左移运算符)左操作数按位左移右操作数指定的位数。
>>(按位右移运算符)左操作数按位右移右操作数指定的位数。
<<<(按位右移补零操作符)左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充
逻辑运算符(操作符是布尔值或布尔变量)
操作符描述
&&(逻辑与运算符)当且仅当两个操作数都为真,条件才为真。
||(逻辑或操作符)如果任何两个操作数任何一个为真,条件为真。
!(逻辑非运算符)用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。
赋值运算符
操作符描述
=(赋值)将右操作数的值赋给左侧操作数
+=(加和赋值操作符)把左操作数和右操作数相加赋值给左操作数
-=(减和赋值操作符)把左操作数和右操作数相减赋值给左操作数
*=(乘和赋值操作符)把左操作数和右操作数相乘赋值给左操作数
/=(除和赋值操作符)把左操作数和右操作数相除赋值给左操作数
(%)=(取模和赋值操作符)把左操作数和右操作数取模后赋值给左操作数
<<=(左移位赋值运算符)左移位和赋值的结合
>>=(右移位赋值运算符)右移位和赋值的结合
&=(按位与赋值运算符)按位与和赋值的结合
^=(按位异或赋值操作符)按位异或和赋值的结合
!=(按位或赋值操作符)按位或和赋值的结合
条件运算符(三元运算符)

​ expression是一个布尔表达式,为真,(value if true)被求值;为假,(value if false)被求值。(主要,两个表达式不能是void类型,且类型必须相同)

variable x = (expression) ? value if true : value if false

Scanner对象

​ 我们可以通过Scanner类来获取用户的输入

基本语法

​ Scanner scanner = new Scanner(System.in);

  • 通过Scanner类的next()和nextLine()方法获取用户的输入字符串,一般用hasnext()与hasNextLine()判断是否还有输入的数据
  • IO流的类一般用完要主动关闭,不然会一直占用资源:scanner.close();
  • next();
    1. 一定要读取有效字符后才可以结束输入
      2. 对输入有效字符前的空白,会自动去掉
      3. 在输入有效字符后的空白会被当成分隔符或结束符
      4. next()不能得到带有空格的字符串
  • nextLine();
    1. 以Enter为结束符,即会返回回车键前的所有字符
      2. 可以获得空白

流程的控制

if语句
if(布尔表达式) {
   //如果布尔表达式为true将执行的语句
}
if…else语句
if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}
if…else if…else语句
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}
嵌套的if…else语句
if(布尔表达式 1){
   如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      如果布尔表达式 2的值为true执行代码
   }
}
switch case语句
switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}
while循环
while( 布尔表达式 ) {
  //循环内容
}

只要布尔表达式为 true,循环就会一直执行下去。

do…while循环
do {
       //代码语句
} while(布尔表达式);

**注意:**布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

for循环
for(初始化; 布尔表达式; 更新) {
    //代码语句
}

关于 for 循环有以下几点说明:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。
break关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

在 for 循环中,continue 语句使程序立即跳转到更新语句。

在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

方法

方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){

​ 方法体

​ return 返回值;

}

  • 修饰符:(可选的),告诉编译器如何调用该方法,定义了该方法的访问类型。

  • 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。

  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

  • 参数类型:参数像是一个占位符,当方法被调用时,这个值被称为实参或变量,参数列表是指方法的参数类型、顺序和参数的个数,参数是可选的,方法可以不包含任何参数。

    1. 形式参数:在方法被调用时用于接收外界输入的数据。
      2. 实参:调用方法时实际传给方法的数据。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

方法的调用

  • 调用方法:对象名。方法名(实参列表)
  • 当方法返回一个值的时候,方法调用通常被当作一个值
  • 如果方法返回值是void,方法调用一定是一条语句

方法的重载

重载规则
  • 方法名称必须相同
  • 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
  • 方法的返回值可以相同也可以不相同
  • 仅仅返回类型不同不足以成为方法的重载
可变参数
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数必须在它前面声明

数组

声明数组:

dataType(数据类型) [ ] arrayRefVar(数组名);

或 dataType arrayRefVar[ ];

创建数组:

arrayRefVar = new dataType[arraySize];

声明创建:

dataType [ ] arrayRefVar = new dataType[arraySize];

  • 长度确定,一旦被创建,大小不可改变
  • 其元素得是同一类型,不许出现混合类型
  • 数组元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量属引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量

数组下标越界:ArrayIndexOutofBounds

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值