07-Java语言基础组成

1-常量:
常量表示不能改变的数值。
  
常量的分类:
1, 整数常量。所有整数
2, 小数常量。所有小数
3, 布尔型常量。较为特有,只有两个数值。true false.
4, 字符常量。将一个数字字母或者符号用单引号('    ') 标识。
5, 字符串常量。将一个或者多个字符用双引号标识。
6, null常量。只有一个数值就是:null.
 
对于整数:java有三种表现形式。
十进制:0-9, 满10进1.
八进制:0-7, 满8进1. 用0开头表示。
十六进制:0-9, A-F, 满16进1. 用0x开头表示。
 
2-变量:
2-1 变量的定义
变量:没有固定的值,可以改变的数。变量以非数字的符号来代表,一般用拉丁字母。用于描述指令。如,num、age、year等等。
  • 内存中的一个存储区域
  • 该区域有自己的名称(变量名)和类型(数据类型)
  • 该区域的数据可以在同一类型范围内不断变化
  • 定义变量可以不断的存放同一类型的常量,并可以重复使用
  • 使用变量时注意:
  1. 变量的作用范围,在一对{ }之间有效;
  2. 初始化值;
  • 定义变量的格式:
                数据类型 变量名 = 初始化值;
                ⚠️格式是固定的,记住格式,以不变应万变。
 
2-2 变量的分类
  • 按所属的数据类型划分:基本数据类型变量、引用数据类型变量
  • 按被声明的位置划分:局部变量(方法或语句块内部定义的变量)、成员变量(方法外部、类的内部定义的变量)

3-标识符:

标识符:java对包、类、方法、参数、变量等要素命名时使用的字符序列称为标识符。

命名规则:

  • 由字母、数字、下划线( _ )、美元符号( $ )组成
  • 不能数字开头
  • 严格区分大小
  • 长度无限制
  • 不能是java的关键字和保留关键字

命名习惯:驼峰命名法、见名知意、以单词或单词组合来命名

  1. 合法标识符,如vince、user_name、$abc_123、_userName
  2. 非法标识符,如2userName、user#Name、hello 大卫、class

Java中的名称规范:

  • 包名:多单词组成时所有字母都小写;xxxyyyzzz
  • 类名/接口名:多单词组成时,所有单词的首字母大写;XxxYyyZzz
  • 变量名和函数名:多个单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写;xxxYyyZzz
  • 常量名:所有字母都大写。多个单词时每个单词用下划线连接;XXX_YYY_ZZZ

4-关键字

关键字:被Java语言赋予了特殊含义的单词。

特点:关键字中所有字母为小写。

用于定义数据类型的关键字

class

interface

byte

boolean

char

int

short

long

float

double

void

 

 

 

 

用于定义数据类型值的关键字

true

false

null

 

 

用于定义流程控制的关键字

if

for

else

switch

case

while

do

break

continue

default

return

 

 

 

 

用于定义访问权限修饰符的关键字

private

protected

public

 

 

用于定义类、函数、变量修饰符的关键字

abstract

final

static

synchronized

 

用于定义类与类之间关系的关键字

extends

implements

 

 

 

用于定义建立实例与引用实例,判断实例的关键字

new

this

super

instanceof

 

用于异常处理的关键字

catch

try

finally

throw

throws

用于包的关键字

package

import

 

 

 

其他修饰符的关键字

assert

volatile

const

enum

strictfp

transient

native

 

 

 

5-运算符与优先级

5-1 运算符
1) 算术运算符:+、-、*、/、%、++、--
表达式:由变量、常量运算符组成的式子。
++:如果是前缀,先对此变量加1,在执行其他操作;如果是后缀,先执行其他的操作,再对此变量加1。【--:同理。】
运算符
描述
示例
结果
+
加法
5+5
10
-
减法
5-3
2
*
乘法
2*3
6
/
除法
10/3
3
%
取余(取模)
10%3
1
++
自增(前、后)
 
 
--
自减(前、后)
 
 
public class Test3{
    public static void main(String[] args){
        
        int a = 1;
        int b = 2;
        int c = a + b;
        System.out.println(c);
        
        a = 10;
        b = 3;
        System.out.println(a/b);
        
        a = b++; //先赋值后自增1 —> 先把b的值赋给a,然后a再+1
        System.out.println("a="+a);
        System.out.println("b="+b);
        //结果:a = 3,b = 4
        
        a = ++b; //先自增1后赋值 —> 先把b+1,然后再把b的值赋给a
        System.out.println("a="+a);
        System.out.println("b="+b);
        //结果:a = 5,b = 5 
        
        int x = 1;
        int y = 2;
        y = x + y - (++y);
        System.out.println("x="+x);
        System.out.println("y="+y);        
        //字符串数据和任何数据使用+ 都是相连接,最终都会变成字符串
        //String m = "你"+"好";
        System.out.println("你"+"好");
            
    }
}

2) 赋值运算符 

 
运算符
描述
示例
结果
=
赋值
a=10
a=10
+=
加等于
a=1,a+=3
a=4
-=
减等于
a=6,a-=3
a=3
*=
乘等于
a=1,a*=3
a=3
/=
除等于
a=10,a/=3
a=3
%=
模等于
a=10,a%=3
a=1
public class Test4{
    public static void main(String[] args){
        short s = 1;
        //s = s + 1;  //两次运算,编译失败,因为s会被提升为int类型,运算后的结果还是int类型,无法赋值给short类型,容易丢失精度。
        s+=1;  //一次运算,编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
        System.out.println(s);
    }
}
3) 关系运算符
运算符
描述
示例
结果
==
相等于
a=10,a==8
false
!=
不等于
a=1,a!=3
true
<
小于
a=6,a<3
false
>
大于
a=10,a>3
true
<=
小于等于
a=10,a<=3
false
>=
大于等于
a=10,a>=3
true
import java.util.Scanner; //接收键盘输入的工具类
public class Test5{
    public static void main(String[] args){
        
        int x = 1;
        int y = 2;
    
        System.out.println(x == y);
        System.out.println(y >= x);        
            
        //创建一个键盘输入的工具
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int x1 = input.nextInt(); //从键盘接受一个整数
        System.out.println(x1);
        System.out.println("请输入一个字符");
        String s = input.next();
        System.out.println(s);
    }
}

4) 逻辑运算符

用于对boolean型结果的表达式进行运算,运算结果总是Boolean型。
运算符
描述
示例
结果
&
false & ture
false
|

 

false & ture
true
^
异或
false ^ ture
true
!
!false
true
&&
短路与
false && ture
false
||
短路或
false || ture
true
在计算机中,非0即真,0为假;逻辑或,或1则1;逻辑与,全1才1。
public class Test6{
    public static void main(String[] args){
        
        boolean x = true;
        boolean y = false;
    
        System.out.println(x & y);
        //与运算,分别计算表达式两边的结果再做&运算,只有两边都为ture,结果才为true,否则为false
        System.out.println(y | x);            
        //或运算,分别计算表达式两边的结果再说|运算,只要有一个为true,结果就为true,两边都为false菜薳false
        System.out.println(y ^ x);            
        //异或运算,两边相同为false,两边不同为true
        System.out.println(!x);            
        //非运算
        System.out.println(x && y);            
        //短路与
        System.out.println(x || y);            
        //短路或
    }
}

5) 位运算符

对两个操作数中的每一个二进制位都进行运算
位运算符的功能:
1、按位取反 ~
2、按位与 &
3、按位或 |
4、按位异或  ^
 
二进制数
运算
结果
    01001111
按位取反 ~
10110000
    11001011
& 01101101
按位与 &
01001001
   11001011
 01101101
按位或 |
11101111
   11001011
^ 01101101
按位异或 ^ 
10100110
6) 位移运算符
左移:“a<<b;”将二进制形式的a 逐位左移b位,最低位空出的b位补0;
带符号右移:“a>>b;”将二进制形式的a 逐位右移b位,最高位空出的b位补原来的符号位;
无符号右移:“a>>>b;”将二进制形式的a 逐位右移b位,最高位空出的b位补0
 
位移运算符正数示例:
100              00000000  00000000  00000000  01100100
100<<3       00000000  00000000  00000011  00100000
100>>3       00000000  00000000  00000000  00001100
100>>>3     00000000  00000000  00000000  00001100
 
左移小规律: 
3<<1——3*2^1
3<<2——3*2^2
3<<3——3*2^3
 
位移运算符负数示例:
-100              11111111  11111111  11111111  10011100
-100<<3       11111111  11111111  11111100  11100000
-100>>3       11111111  11111111  11111111  11110011
-100>>>3     00011111  11111111  11111111  11110011
 
右移小规律:
6>>1——6/2^1=3
6>>2——6/2^2=1
 
7) 三目运算符
格式:X ? Y : Z
X:boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式x的值。
 
如:从键盘输入一个成绩,判断该分数是否及格
import java.util.Scanner;
public class Test12{
    public static void main(String[] args){
        
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个成绩:");    
        int score = input.nextInt();
        
        //String表示一个字符串类型,不是基本数据类型
        String result = score>=60?"及格":"不及格";
        System.out.println(result);    
    }
}

6个练习题:

1、通过键盘输入声明初始化一个圆柱体的高和底面半径,π的值是3.14,求圆柱体的体积,并显示输出圆柱体的体积?
import java.util.Scanner; //接收键盘输入的工具类
public class Test7{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入圆柱体的高");
        double h = input.nextDouble(); //从键盘接受一个整数
        System.out.println("请输入圆柱体的底面半径");
        double r = input.nextDouble(); //从键盘接受一个整数
        
        double S = 3.14*h*r*r;

        System.out.println(S);
        
    }
}

2、定义一个5位数,求各个位上的数字之和?

public class Test8{
    public static void main(String[] args){
        int num = 12654;
        int w = num/10000;
        int q = num/1000%10;
        int b = num/100%10;
        int s = num/10%10;
        int g = num%10;
        
        int Sum = g+s+b+q+w;
    
        System.out.println(w);
        System.out.println(q);
        System.out.println(b);
        System.out.println(s);
        System.out.println(g);
        System.out.println(Sum);        
    }
}

3、根据天数(46)计算周数和剩余的天数,天数是通过键盘输入的

import java.util.Scanner;
public class Test9{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个天数:");
        int day = input.nextInt();


        System.out.println("周数是:"+(day/7));    
        System.out.println("剩余天数是:"+(day%7));                 
    }
}

4、&和 &&的区别?

 &:在逻辑运算时分别计算表达式两边的结果,再做&运算;在位运算时,&表示按位与。
 &&:短路与运算,先算左边的表达式,若结果是false,则不用计算右面表达式,结果直接返回false;若结果是true,再计算右面表达式,如右边的表达式为true,结果为true,否则返回false。
 
//& 和 &&的区别?
public class Test10{
    public static void main(String[] args){
        //&:在逻辑运算时分别计算表达式两边的结果,再做&运算;
        //   在位运算时,&表示按位与。
        //&&:短路与运算,先算左边的表达式,若结果是false,则不用计算右面表达式,结果直接返回false;
        //    若结果是true,再计算右面表达式,如右边的表达式为true,结果为true,否则返回false。
        // | 和 ||的原理同上。
        //所以短路与和短路或的计算效率更高,建议使用。
        System.out.println("周数是:"+(day/7));    
        System.out.println("剩余天数是:"+(day%7));                 
    }
}

 | 和 || 的原理同上。

 所以短路与和短路或的计算效率更高,建议使用。
 
5、以最快的速度计算8*4的结果?
使用位移的方法是最快的
int result = 8 <<2;
 
左移算法:位移数作为2的次幂与操作数相乘
8*4  ==> 8<<2
10*4 ==> 10<<2 = 40
 
右移算法:操作数除以位移数的2次幂
10/2 ==> 10>>1 = 5
 
6、通过键盘输入,初始化两个数,将这两个数交换位置后,输出显示交换后的数据
import java.util.Scanner;
public class Test11{
    public static void main(String[] args){
        
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个数:");    
        int a = input.nextInt();
        System.out.println("请输入第二个数:");    
        int b = input.nextInt();
        //方法一:通过第三个变量来交换
        int c = a;
        a = b;
        b = c;
        System.out.println("a="+a+",b="+b);    
        
        //方法二:通过表达式来交换两个数
        a = a + b - (b=a)
        System.out.println("a="+a+",b="+b);    
        
        //方法三:通过 +、- 来交换两个数
        a = a+b;
        b = a-b;
        a = a-b;
        System.out.println("a="+a+",b="+b);
        
        //方法四:通过异或来交换两个数是最快的方式(注意:a不能等于b)
        a = a^b;
        b = a^b;
        a = a^b;
        System.out.println("a="+a+",b="+b);
    }
}
5-2 优先级
 
优先级
运算符
综合性
1
()、[ ]
从左到右
2
! 、+(正)、 - (负)、~、 ++、 --
从右到左
3
^、/、%
从左到右
4
+(加)、-(减)
从左到右
5
<<、>>、>>>
从左到右
6
< 、<=、 >、 >=
从左到右
7
==、!=
从左到右
8
&(按位与)
从左到右
9
*
从左到右
10
|
从左到右
11
&&
从左到右
12
||
从左到右
13
从左到右
14
=、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、>>>=
从右到左
//从键盘输入一个成绩,判断该分数是否及格
import java.util.Scanner;
public class Test12{
    public static void main(String[] args){
        
        Scanner input = new Scanner(System.in);
        //System.out.println("请输入第一个成绩:");    
        //int score = input.nextInt();
        
        //String表示一个字符串类型,不是基本数据类型
        //String result = score>=60?"及格":"不及格";
        //System.out.println(result);    
        
        int a=1;
        int b=2;
        a = ++a + (b--) + (a-b) + b;
        //  2 + 2 - 0 + 2 = 6
        System.out.println(a);
    }
}

6-转义字符

转义字符:通过\来转变后面的字母或者符号的含义。
\n
换行,将当前位置移到下一行开头
\b
退格。相当于backspace
\r
回车(CR),将当前位置移到本行开头[ Windows系统中回车符是有两个字符来表示\r\n ]
\t
水平制表(跳到下一个TAB位置)
\\
代表一个反斜线字符“\”
\’
代表一个单引号字符
\”
代表一个双引号字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值