Day-02-java基础语法

Day-02-java基础语法

快捷键操作

psvm -->快速生成public static void main(String[] args) {}

sout -->快速生成System.out.println();

注释:

Java中的注释有三种:

注释:
    单行注释:
    //我是单行注释
    多行注释  
    /*我是多行注释*/
    文档注释
    /**
    *@description  HelloWrold
    *@Author 作者
    */

标识符:

关键字

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

标识符注意点

所有的标识符都应该以**字母(A-Z或者a-z),美元符( ) 、 数 字 或 者 下 划 线 ( ) ∗ ∗ 开 始 首 字 符 之 后 可 以 是 字 母 ( A − Z 或 者 a − z ) , 美 元 符 ( )、数字或者下划线(_)**开始 首字符之后可以是字母(A-Z或者a-z),美元符( )线()AZaz),)、下划线(_)或数字的任何字符组合

不能使用关键字作为变量名或方法名。

标识符是大小写敏感的

合法标识符举例: age、$salary._value、__1_value

非法标识符举例:123abc、-salary、#abc

遵照驼峰命名:

类名:首字母大写,其余遵循驼峰命名

方法名,变量名:首字母小写,其余遵循驼峰命名

包名:全部小写,不遵循驼峰命名

数据类型

Java的数据类型分为两大类
基本类型(primitive type)

​ 引用类型(reference type)

img

img

//八大基本数据类型

        //整数

        int num1 = 10;
        byte num2 = 20;
        short num3 = 30;
        long num4 = 40L;  //long类型要在数字后面加上L

        //浮点数
        float num5 = 50.1F;  //float类型要在数字后面加上F,浮点数默认是double类型的。
        double num6 = 6.15234;
		double num7 = 314E-2;  //科学计数法

        //字符,java中无论:字母,数字,符号,中文都是字符类型的常量,都占用2个字节
        char name = 'A';

        //字符串,String 不是关键字,而是类
        String names = "张三";

        //布尔值
        boolean flag = true;
//整数拓展:  进制   二进制0b  十进制   八进制0     十六进制0x
        int i = 10;
        int i2 = 010; //八进制0
        int i3 = 0x10;   //十六进制   0~9 A~F 16

        //浮点数拓展
        //float 有限   离散   舍入误差   大约  接近但不等于
        //最好不要使用浮点数进行比较,因为他们字节不相同
        float f = 0.1f;  //0.1
        double d = 1.0/10; //0.1
        System.out.println(f==d);  //false
        System.out.println(f);
        System.out.println(d);

        //字符拓展
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);  //强制转换 97

        System.out.println(c2);
        System.out.println((int)c2);   //强制转换  20013

        //所有的字符本质还是数字


        //转义字符
        // \t  制表符
        // \n  换行
		// \b 退格
		// \r  将光标到本行开头:回车
        // \"  双引号
		// \'  单引号
		// \\ 反斜杠

        String a1 = new String("hello world");
        String b1 = new String("hello world");
        System.out.println(a1==b1);  //false

        String s1 = "hello world";
        String s2 = "hello world";
        System.out.println(s1==s2);  //true

        //布尔值扩展
        boolean flag = true;
        if (flag==true){}  //新手
        if (flag){};  //老手
=============================================
public static void main(String[] args){
    //定义整数类型的变量
    int num1 = 12; //默认情况下赋值就是十进制的情况
    int num1 = 012;  //前面加上0,这个值就是八进制的
    int num1 = 0x12;  //前面加上0x或者0X,这个值就是十六进制的
    int num1 = 0b12; //前面加上0b或者0B,这个值就是二进制的
}

类型转换

由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

低------------------------------------------------------------------------>高

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

int i = 128;
        byte b = (byte)i; //内存溢出
        //强制转换  (类型)变量名  高---->低
        System.out.println(i);
        System.out.println(b);
        //自动转换  低---->高
        /*
        注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.在把高容量转换到低容量的时候,强制转换
        4.转换的时候可能存在内存溢出,或者精度问题
        * */
        System.out.println((int)23.7);
        System.out.println((int)-45.7f);

        //操作比较大的数的时候,注意溢出问题
        //JDK新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int year = 20;
        int total = money*year;  //-1474836480
        long total1 = money*year; //默认是int,转换之前就存在问题
        long total2 = money*(long)year; //先把一个数转换为long

		//在同一个表达式中,有多个数据类型的时候,应该如和处理:
		//多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,维度布尔类型不可以参与运算。
		//当一个表达式中有多种数据类型的时候,要找出当前表达式中级别最高的那个类型,然后其余的类型都转换为当前表达式中级别最高的类型进行计算。
		//	double a = 12+1294L+8.5F+3.81+'a';
					 = 12.0+1294.0+8.5+3.81+97.0
		//在进行运算的时候:=右  :直接赋值               
          左<右  :强转
          左>右  : 直接自动转换
       //一下情况属于特殊情形:对于byte,short,char类型来说,只要在他们的表述范围内,赋值的时候不需要进行
       //强转了直接复制即可。
        byte b = 12byte b2 = (byte)280;                 

变量

Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
注意事项:
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

​ 变量不可以重复定义

变量作用域:

​ 类变量

​ 实例变量

​ 局部变量

作用范围就是离变量最近的{}

//类变量  static
static double salary = 2500;

//属性:变量

//实例变量:从属于对象:如果不自行初始化,这个类型的默认值   0  0.0
//布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;

//main方法
public static void main(String[] args) {

    //局部变量,必须声明和初始化值
    int i = 10;
    System.out.println(i);

    //变量类型   变量名字=new Demo2();
    Demo2 demo2= new Demo2();
    System.out.println(demo2.age);
    System.out.println(demo2.name);

    //类变量  static
    System.out.println(salary);
}
//其他方法
public void add(){
    System.out.println();
}

常量:

常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

常量名一般使用大写字符。

//修饰符,不存在先后顺序  等同于final static double PI=3.14;
static final double PI=3.14;
public static void main(String[] args) {
    System.out.println(PI);
}

变量的命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则: monthSalary除了第一个单词以外,后面的单词首字母大写 lastname lastName
局部变量}首字母小写和驼峰原则
常量:大写字母和下划线:MAvALUE .V类名:首字母大写和驼峰原则: Man, 99M4a"146.56KBs

方法名:首字母小写和驼峰原则: run(), runRun()

运算符

Java语言支持如下运算符:
二元运算符(+-*/%)  一元运算符(++--- 算术运算符:+-*/%++(自增),--(自减)
- 赋值运算符=
- 关系运算符:><>=<===!= ,instanceof
- 逻辑运算符: &|^&&||!
- 位运算符:&|^~>><<>>>(了解! ! ! )
- 条件运算符?:
- 扩展赋值运算符:+=-=*=/=

快捷键操作 Ctrl + D :复制当前行到下一行

// ++ -- 自增  自减  一元运算符
//++单独使用的时候,无论放在前还是后,都是加1操作   a++;    ++a;
//将++参与到运算中,看++在前还是在后,如果++在前,先加1,后运算,如果++在后,先运算,后加1
/*
		int a = 5;
        System.out.println(a++);  //5
        System.out.println("此时的a为:"+a);  //6
        System.out.println(++a);  //7
        System.out.println("此时的a为:"+a);  //7
        System.out.println(a--);  //7
        System.out.println("此时的a为:"+a);  //6
        System.out.println(a++ + ++a);  //14
        System.out.println("此时的a为:"+a);  //8
        System.out.println(--a);  //7
        System.out.println("此时的a为:"+a);  //7
        System.out.println(a--);  //7
        System.out.println("此时的a为:"+a);  //6
        System.out.println(--a + a--);  //10
        System.out.println("此时的a为:"+a);  //4   
*/
    int a = 3;
    int b = a++;  //执行完这行代码后,先给b赋值,再自增
    //a++ 意味着 a = a+1
    System.out.println(a);  //4
    //a = a + 1
    int c = ++a;  //执行完这行代码,先自增,再给b赋值

    System.out.println(a); //5
    System.out.println(b);  //3
    System.out.println(c);  //5

    //幂运算  2^3  2*2*2 = 8
     double pow = Math.pow(2,3);
    System.out.println(pow);
//逻辑运算符
//逻辑与:& 规律:只要有一个操作数是false,那么结果一定是false
//短路与:&& 规律:效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
//逻辑或:| 规律:只要有一个操作数是true,那么结果一定是true
//短路或:|| 规律:效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
//逻辑非:! 规律:相反结果
//逻辑异或:^ 规律:两个操作数相同,结果为false,不相同,结果为true
// 与(and)  或(or)  非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a&&b));  // false 逻辑与运算:俩个变量都为真,结果才为true
        System.out.println("a || b:"+(a||b));  // true  逻辑或运算:俩个变量有一个为真,则结果才为true
        System.out.println("! (a && b):"+!(a&&b));  // true 如果是真,则变为假,如果是假则变为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);  //false
        System.out.println(c);  //5
/*
位运算符
A = 0011  1100
B = 0000  1101

A&B = 0000  1100
A|B = 0011  1101
A^B = 0011  0001
~B = 1111  0010

2*8 = 16   2*2*2*2
<< 左移
>> 右移
0000  0000   0
0000  0001   1
0000  0010   2
0000  0011   3
0000  0100   4
0000  1000   8
0001  0000   16
 */
System.out.println(2<<3);  //16

有符号左移

image-20210203152638207

有符号右移

image-20210203153200629

无符号右移

image-20210203153307938

&与

6&3=2

image-20210203153602467

|或

6|3=7

image-20210203153720828

^异或

6^3=3

image-20210203153859643

~反

~6=-7

image-20210203154041652

拓展赋值运算符
		int a = 10;
        int b = 20;
        a+=b; //a = a + b
        a-=b; //a = a - b
        System.out.println(a);
        //字符串连接符  + ,String
        System.out.println(""+a+b); //1020 拼接
        System.out.println(a+b+""); //30
a+=b 和 a=a+b区别:
(1)a+=b 可读性稍差  编译效率高  底层自动进行类型转换
(2)a=a+b 可读性好  编译效率低  手动进行类型转换
条件运算符
//x ? y : z
        //如果x==true,则结果为y,否则结果为z
        int score = 80;
        String type = score >60 ? "不及格":"及格";
        System.out.println(type); //不及格

运算符的优先级

赋值<三目<逻辑<关系<算术<单目
案例:
    5<6|'A'>'a'&&12*6<=45+23&&!true
   =5<6|'A'>'a'&&12*6<=45+23&&false
   =5<6|'A'>'a'&&72<=68&&false
   =true|false&&false&&false
   =true&&false&&false
   =false&&false
   =false

包机制

为了更好的组织类,java提供了包机制,用于区别类名的命名空间。

一般利用公司域名倒置作为包名;

为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用“import”语句可以达到此功能。

import 包名.类名
    import 包名.*   //改包下的所有类
    在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java包及其子包下,Java扩展的大部分类都放在javax包及其子包下。
	java.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等java.net:包含Java网络编程相关的类和接口。
	java.io:包含了Java输入、输出有关的类和接口。
	java.awt:包含用于构建图形界面(GUI)的相关类和接口。
    除了上面提到的常用包,JDK中还有很多其他的包,比如数据库编程的java.sql包、编写GUI的javax.swing包等,JDK中所有包中的类构成了Java类库。

JavaDoc

javadoc命令是用来生成自己API文档的API
参数信息:

  • author 作者名
  • version版本号
  • since指明需要最早使用的jdk版本
  • param参数名
  • return返回值情况
  • throws异常抛出情况

练习题

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        //求圆的周长和面积
        //一个变量被final修饰,这个变量就变成了一个常量,这个常量的值就不可变了
        final double pi = 3.14;
        Scanner sc = new Scanner(System.in);
        System.out.print("请录入一个半径:");
        int r = sc.nextInt();
        //圆的周长
        double c = 2*pi*r;
        System.out.println("圆的周长"+c);

        //圆的面积
        double s = pi*r*r;
        System.out.println("圆的面积"+s);
    }
}

练习题二

public static void main(String[] args) {
    //实现:任意给出一个四位数,求出每位上的数字并输出
    Scanner sc = new Scanner(System.in);
    System.out.print("请输入一个四位数:");
    int num = sc.nextInt();
    int num1 = num%10;
    int num2 = num/10%10;
    int num3 = num/100%10;
    int num4 = num/1000;
    System.out.println("个位上的数字为"+num1);
    System.out.println("十位上的数字为"+num2);
    System.out.println("百位上的数字为"+num3);
    System.out.println("千位上的数字为"+num4);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流苏树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值