JAVA基础学习入门

JAVA入门之基本语法(一)

最近开始复习JAVA语言为找工作做准备,方便以后再次复习或者用到的时候回顾。先是从JAVA的基本语法学起,因为有c和c++语言的基础知识铺垫,所以这部分的笔记会比较粗略,毕竟语言都是贯通的嘛~

1.变量

1.1变量的使用

  • java定义变量的格式:数据类型 变量名 = 变量值
  • 说明:
    1.变量必须先声明,后使用
    2.变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了
    3.不可以在同一个作用域内定义同名的变量

1.2变量的数据类型

在这里插入图片描述

1.2.1整数类型:byte、short、int、long
  • java各整数类型有固有的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性
  • java的整型常量默认为int型,声明long型常量须后加“l”或“L”
  • java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
类型占用存储空间表数范围
byte1字节=8bit位-128~127
short2字节 − 2 15 -2^{15} 215~ 2 15 − 1 2^{15}-1 2151
int4字节 − 2 31 -2^{31} 231~ 2 31 − 1 2^{31}-1 2311
long8字节 − 2 63 -2^{63} 263~ 2 63 − 1 2^{63}-1 2631
1.2.2浮点类型:float、double
  • Java的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’
类型占用存储空间表数范围
单精度float4字节-3.403E38~3.403E38
双精度double8字节-1.798E308~1.798E308
1.2.3字符类型:char
  • char型数据用来表示通常意义上“字符"(2字节)
  • Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符
  • 字符型变量的三种表现形式:
    1.字符常量是用单引号(’’)括起来的单个字符,内部只能写一个字符
    2.Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量
    3.直接使用Unicode值表示字符型常量
  • char类型是可以进行运算的。因为它有对应的Unicode码
1.2.4字符类型:boolean
  • 只能取两个值之一:true、false
  • 常常在条件判断、循环结构中使用

1.3基本数据类型之间的运算规则

这里只讨论7种基本数据类型变量间的运算。不包含boolean类型。

1.3.1自动类型提升

当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。注意:此时的容量大小指的是,表示数的范围的大和小。比如:float容量大于long容量。
byte 、char 、short–>int–>long–>float–>double
特别的,当byte、char、short三种类型的变量做运算时,结果为int型

1.3.2强制类型转换(自动类型提升运算的逆运算)
  • 需要使用强制符:( )
  • 注意点:强制类型转换,可能会导致精度损失
class VariableTest3 {
      public static void main(Stringp[] args){
          double d1 = 12.9;
          //精度损失举例1
          int i1 = (int)d1;//截断操作
          System.out.println(i1);//12
   
          //没有精度损失
          long l1 = 123;
          short s2 = (short)l1;

         //精度损失举例2
          int i2 = 128;
          byte b = (byte)i2;
          System.out.println(b);//-128
     }
}
  • 整型常量,默认类型为int型号;浮点型常量,默认类型为double型。
class VariableTest4 {
      public static void main(Stringp[] args){
          byte b = 12;
          byte b1 = b + 1; //编译失败
          float f1 = b + 12.3; //编译失败
     }
}

1.4 String类型变量的使用

  • String属于引用数据类型,翻译为:字符串
  • 声明String类型变量时,使用一对“ ”
  • String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
  • 运算结果仍然是String类型
class StringTest1 {
      public static void main(Stringp[] args){
          char c = 'a';//97 A:95
          int num = 10;
          String str = "hello";
          System.out.println(c + num + str); //107hello
          System.out.println(c + str + num); //ahello10
          System.out.println(c + (num + str)); //a10hello
          System.out.println((c + num) + str); //107hello
          System.out.println(str + num + c); //hello10a

          System.out.println("* *"); //* *
          System.out.println('*' + '\t' + '*'); //93
          System.out.println('*' + "\t" + '*'); //* *
          System.out.println('*' + '\t' + "*"); //51*
          System.out.println('*' + ('\t' + "*")); //* *
     }
}

2.关于进制

  • 所有数字在计算机底层都以二进制形式存在
  • 对于整数,有4种表示方式:
    1.二进制(binary):0,1,满2进1。以0b或0B开头
    2.十进制(decimal):0-9,满10进1
    3.八进制(octal):0-7,满8进1。以数字0开头表示
    4.十六进制(hex):0-9及A-F,满16进1。以0x或0X开头表示。此处的A-F不区分大小写。
  • Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位
  • 二进制的整数有如下三种形式:
    1.原码:直接将一个数值换成二进制数。最高位是符号位
    2.负数的反码:是对原码按位取反,只是最高位(符号位)确定为1
    3.负数的补码:其反码加1
  • 计算机以二进制补码的形式保存所有的整数
    1.正数的原码、反码、补码都相同
    2.负数的补码是其反码+1
  • 十进制—>二进制:除2取余的逆,其余进制之间的转换,自寻百度,非常简单

3.运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等等
Java中主要有:算术运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符

3.1 算数运算符、赋值运算符以及比较运算符:

运算符运算范例结果
+正号+33
-负号b=4;-b-4
+5+510
-6-42
*b=4;-b-4
/b=4;-b-4
%取模(取余)b=4;-b-4
++自增(前):先运算后取值a=2;b=++a;a=3;b=3
++自增(后):先取值后运算a=2;b=a++;a=3;b=2
- -自减(前):先运算后取值a=2;b=- -a;a=1;b=1
- -自减(后):先取值后运算a=2;b=a- -;a=1;b=2
+字符串连接“he”+“llo”“hello”
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是类的对象“hello” instanceof Stringtrue

3.2 逻辑运算符:(逻辑运算符操作都是boolean类型的变量)

ABA&BA&&BA|BA||B!AA^B
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse

3.3 位运算符:(位运算是直接对整数的二进制的运算)

  • 位运算符操作的都是整型的数据
  • <<:在一定范围内,每向左移1位,相当于 * 2
  • >>:在一定范围内,每向右移1位,相当于 / 2
    面试题:最高效方式的计算2*8?===> 2<<3 或 8<<1
运算符运算范例
<<左移3<<2 = 12 --> 322=12
>>右移3>>1 = 1 --> 3/2=1
>>>无符号右移3>>>1= 1 --> 3/2=1
&与运算6&3 = 2
|或运算6|3 = 7
^异或运算6^3 = 5
~取反运算~6 = -7
  • 位运算符的细节
运算符细节
<<空位补0,被移除的高位丢弃,空缺位补0
>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1
>>>被移位二进制最高位无论是0或是1,空缺位都用0补
&二进制位进行&运算,只有1&1时结果是1,否则是0
|二进制位进行|运算,只有0|0结果是0,否则是1
^相同二进制位进行^运算,结果是0;1^1=0,0^0=0;不相同二进制位进^运算结果是1,1^0=1,0^1=1
~正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反

3.4 三元运算符:

  • 结构:(条件表达式)?表达式1 : 表达式2
  • 说明:
    1.条件表达式的结果为boolean类型
    2.根据条件表达式真或假,决定执行表达式1,还是表达式2。如果表达式为true,则执行表达式1;如果表达式为false,则执行表达式2
    3.条件表达式1和表达式2的结果是一致的
    4.三元运算符可以嵌套使用
    5.凡是可以使用三元运算符的地方,都可以改写成if-else,反之不成立
    6.既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符
     double num = (m > n) ? 2 : 1.0; //编译错误
     String maxStr = (m > n)?"m大"  : ((m==n) ? "m和n相等" : "n大");
     System.out.println(maxStr);

4.程序流程控制

4.1 顺序结构:

  • 程序从上到下逐行地执行,中间没有任何判断和跳转

4.2 分支结构:

  • 根据条件,选择性地执行某段代码
  • 有if-else和switch-case两种分支语句

4.3 循环结构:

  • 根据循环条件,重复性地执行某段代码
  • 有while、do…while、for三种循环语句
  • 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素

最后希望大家多多关注我、支持我一下~~,我会持续更新关于JAVA语言的知识和大家一起分享的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值