Learning Java Day03

变量

  • 变量是什么:就是可以变化的量!

  • Java是一种强类型语言,每个变量都必须声明其类型

  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

type varName [=value] [{, varName[=value]}]
//数据类型 变量名 = 值; 
//可以使用逗号隔开来声明多个同类型变量,但不推荐

注意事项

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型(String)

  • 变量名必须是合法的标识符

  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

public class HelloWorld {
    public static void main(String[] args) {
        //int a, b, c;
        //int a=1, b=2, c=3; 
        //影响程序的可读性,不提倡
        int a = 1;
        String name = "Harryking";
        char x = 'X';
        double pi = 3.14;
    }
}

变量的作用域

  • 类变量

  • 实例变量

  • 局部变量

public class HelloWorld {
    static int allClick = 0;    //类变量
    String str = "hello world"; //实例变量
​
    public void method() {
        int i = 0;              //局部变量
    }
}
public class HelloWorld {
    //属性:变量
​
    // 类变量 static
    static double salary = 2500;
​
    //实例变量:从属于对象
    //如果不自行初始化,则是这个类型的默认值
    //(0 0.0 u0000)
    //布尔值:默认是false
    //除了基本类型,其余默认值都是null
    String name;
    int age;
​
    //main方法
    public static void main(String[] args) {
        //局部变量:必须声明和初始化值
        int i = 10;
        System.out.println(i);
        //作用域仅在main方法的大括号中
​
        //实例变量的使用
        //变量类型 变量名字 = new HelloWorld();
        HelloWorld helloWorld = new HelloWorld();
        System.out.println(helloWorld.age);
        System.out.println(helloWorld.name);
​
        //类变量 static
        System.out.println(salary);
    }
    //其他方法
    public void add()
    {
​
    }
}

变量的命名规范

  • 使代码便于阅读

  • 所有变量、方法、类名:见名知意

  • 类成员变量:首字母小写和驼峰原则

    monthSalary除了第一个单词外,后面单词的首字母大写

  • 局部变量:首字母小写和驼峰原则

  • 常量:大写字母和下划线:MAX_VALUE

  • 类名:首字母大写和驼峰原则:GoodMan

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

常量

常量Constant:初始化initialize后不能再改变值!不会变动的值

所谓常量可以理解成一种特殊的变量, 它的值被设定后,在程序运行的过程中不允许被改变

final 常量名 = 值
//eg
final double PI = 3.14;

常量名一般使用大写字符

public class HelloWorld {
​
    //static、final皆为修饰符,不存在先后顺序、
    //即二者可调换顺序
    //除此之外还有public,private等
    static final double PI = 3.14;
​
    public static void main(String[] args) {
        System.out.println(PI);
    }
}

基本运算符

赋值运算符

以及拓展的部分皆是同C语言

算术运算符

package operator;
public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //Ctrl + D:复制当前行到下一行
        int a = 10;
        int b = 20;
        System.out.println(a + b);          //0
         System.out.println(a - b);         //-10
        System.out.println(a * b);          //200
        System.out.println(a / b);          //0
        System.out.println(a / (double)b);  //0.5
        long c = 123123123123L;
        int d = 123;
        short e = 10;
        byte f = 8;
        //若基本运算中存在double则运算结果为double
        //除此之外若存在Long其结果为Long
        //此外的情况结果都为Int
        System.out.println(a+b+c+d); // Long
        System.out.println(b+c+d);   // Int
        System.out.println(c+d);     // Int
        //取余,模运算
        int g = 21;
        System.out.println(g % a); 
        // 21 / 10 = 2 ... 1
    }
}

一元运算符:++自增--自减,用法同C

关系运算符

package operator;
public class Demo01 {
    public static void main(String[] args) {
        //关系运算符返回的结果:true false 布尔值
        //if中常用
        int a = 10;
        int b = 20;
        System.out.println(a > b);  //false
        System.out.println(a < b);  //true
        System.out.println(a == b); //false
        System.out.println(a != b); //true
    }
}
package operator;

public class Demo01 {
    public static void main(String[] args) {
        //与(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(b && a));
        //逻辑与运算:两个变量都为true,结果才为true
        System.out.println("a || b:"+(b || a));
        //逻辑或运算:两个变量有一个为true
        //则结果为true
        System.out.println("!(a && b):"+!(b && a));
        //如果是true,则变为false
        //如果是false,则变为true

        //记住以上的输出形式,以+连接输出的两个部分

        //短路运算
        int c = 5;
        boolean d = c < 4 && c ++ < 4;
        System.out.println(d);
        System.out.println(c);
    }
}

工具类

幂运算

N^M pow函数

package operator;
import static java.lang.Math.pow;
public class Demo01 {
    public static void main(String[] args) {
        double pow = pow(2, 3);
        System.out.println(pow);
    }
}

很多运算我们会使用一些工具类来操作

位运算

特点 -- 效率极高!!!

package operator;

public class Demo01 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        ---------------------
        和运算
        A & B = 0000 1100
        与运算
        A | B = 0011 1101
        异或运算 -- 相同为0,不同为1
        A ^ B = 0011 0001
        取反运算
         ~ B  = 1111 0010

         2 * 8 == 16 -> 2*2*2*2
         << 左移 *2
         >> 右移 /2

         0000 0001  1
         0000 0010  2
         0000 0100  4
         0000 1000  8
         0001 0000  16
         */
        System.out.println(2 << 3);
    }
}

字符串连接符

+sout中输出是,若是遇见String则连接字符串输出

package operator;

public class Demo01 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //sout中当String类型出现时+为字符串连接符
        //其余时候依旧为算术运算符
        System.out.println(""+ a + b);//1020
        System.out.println(a + b +"");//30
    }
}

条件运算符

? :即使三元运算符

用法同C语言

优先级

建议都是用括号,提高可读性

包机制

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

包的本质 -- 文件夹

包语句的语法格式

//定义包
package pkg1[.pkg2[.pkg3[...]]];

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

域名:www.Harryking.com -> 包名:com.Harryking.www

为了能使用某一个包的成员,我们需要在Java程序中明确导入改包,使用import语句导入即可

import package1[.package2[...]].(classname|*)

注意包名尽量不重复可能在导入时发生冲突

创建包时可以一次性创造内涵关系,其中以.分隔

通配符

import com.Harryking.* //导入这个包下所有的类!

Java Doc

将我们的注释信息生成一个帮助文档

javadoc命令是用来生成自己的API文档的

JDK帮助文档

参数信息

  • @author 作者名

  • @version 版本号

  • @since 指明需要最早使用的JDK版本

  • @param 参数名

  • @return 返回值情况

  • @throws 异常抛出情况

package com.Harryking.www;
//类注释
/**
 * @author Harryking
 * @version 1.0
 * @since 1.8
 */
public class Doc {
    String name;
    //方法注释
    /**
     * @author Harryking
     * @param name
     * @return
     * @throws Exception
     */
    public String test (String name) throws Exception{
        return name;
    }
    //通过CMD命令行 javadoc [-encoding UTF-8 -charset UTF-8] Java文件
    //IUEA生成JavaDoc文档! 面向百度编程!
}

面向百度编程

注记

基础部分的一切知识,后面几乎每天都会有

Java流程控制

Scanner对象

java.util.ScannerJava5的新特征

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

//基本语法
Scanner s = new Scanner(System.in);

通过Scanner类的next()nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()hasNextLine()判断是否还有输入的数据

next()方法

  • 一定要读取到有效字符后才可以结束输入

  • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉

  • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

  • next()不能得到带有空格的字符串

//next()方式
package com.Harryking.base;
​
import java.util.Scanner;
​
public class Helloworld {
    public static void main(String[] args) {
​
        //创造一个扫描器对象,用于接受键盘数据
        Scanner scanner = new Scanner(System.in);
​
        System.out.println("使用next的方式接收:");
        //判断用户有没有输入字符串
        if (scanner.hasNext()){
            //使用next的方式接收
            String str = scanner.next();
            //程序会等待用户输入完毕
            System.out.println("输出内容为:"+str);
​
           //凡是属于IO流(输入输出)的类不关闭会一直占用资源,要养成好习惯用完就关掉
            scanner.close();
        }
    }
}

nextLine()方法

  • Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

  • 可以获得空白

//nextLine()方法
package com.Harryking.base;
​
import java.util.Scanner;
​
public class Helloworld {
    public static void main(String[] args) {
        //从键盘接受数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接收:");
        //判断是否还有输入
        if(scanner.hasNextLine()) {
            String str = scanner.nextLine();
            System.out.println("输出的内容为:"+str);
        }
        scanner.close();
    }
}

注:if的判断语句可无

进阶使用

package com.Harryking.base;
​
import java.util.Scanner;
​
public class Helloworld {
    public static void main(String[] args) {
​
        Scanner scanner = new Scanner(System.in);
​
        //从键盘接收数据
        int i = 0;
        float f = 0.0F;
​
        System.out.println("请输入整数:");
        //如果...那么
        if (scanner.hasNextInt()) {
            i = scanner.nextInt();
            System.out.println("整数数据:"+ i);
        } else {
            System.out.println("输入的不是整数!");
        }
​
        System.out.println("请输入小数:");
        if (scanner.hasNextFloat()) {
            f = scanner.nextFloat();
            System.out.println("小数数据:"+ f);
        } else {
            System.out.println("输入的不是小数!");
        }
        scanner.close();
    }
}

问题:我们可以输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果

package com.Harryking.base;
​
import java.util.Scanner;
​
public class Helloworld {
    public static void main(String[] args) {
​
        Scanner scanner = new Scanner(System.in);
        //和
        double sum = 0;
        //计算输入了多少个数字
        int m = 0;
        //通过循环判断是否还有输入,并对里面对每一次进行求和和统计
        while (scanner.hasNextDouble()) {
            double x = scanner.nextDouble();
            m ++;
            sum += x;
            System.out.println("你输入了第"+ m + "个数据,然后当前结果sum = " + sum);
        }
        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值为" + (sum / m));
        scanner.close();
​
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Harry_zlh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值