2.变量,常量与Java运算符

上节课问题解决

cmd 下Java输出乱码问题
解决乱码问题的方法:cmd运行java出现中文乱码解决方法 – 智云一二三科技

本次课知识点:变量,类型和运算符

1.编程的过程(Java编程步骤)

一部分编程语言是编译性语言(C,C++…..)
一部分编程语言是解释性语言(JavaScript,python,…)
Java是半编译半解释语言(JVM)
书写源代码➡编译源代码➡class代码➡运行class代码

2.编程的语法(Java语法)

编程的语法风格: 1.{} 2.换行块

Java编程程序结构
xxx{
xxx;
}

边界符:切记:必须是英文状态输入,且成对出现
{} [] () ‘’ “”

程序执行入口:包含了main方法的类

// 类
public class A{
    // 方法
    public static void main(String[] args){
        Systom.out.println("sfsdf.");
    }
}

复合语句和简单语句
复合语句也称块语句,复合语句有大括号“{”开始,”}”结束。复合语句中的每个语句都是从上到下被执行的。
复合语句是一个整体,从语法上讲,一个复合语句被看成一个简单语句。
复合语句中还可以嵌套复合语句;
简单语句:是单独的一条语句,有“;”结束语句。

2.1、变量

变量是表示一个可以变化的数据值
如果数据值不变化,称为常量
变量语法模板:
定义:type varName [= value];
数据类型 变量名称 = 变量值;

变量名组成部分:数字,字母,下划线_和 $ 组成,不能以数字开头,不能使用关键字。
变量名的命名规范:小写字母开头,后续单词首字母大写。驼峰命名法,见名知意
类名命名规范:类名首字母大写。
方法名命名规范:方法名首字母小写

2.2、常量

如果数据值不变化,称为常量
常量用关键词final修饰。
优点:比较安全
推荐做法:
(1)常量名通常大写
(2)不同字符使用下划线分隔
(3)只能被赋值一次,通常定义时即对其初始化

final int NUM = 10;
final double PI = 3.14;
int r = 2;    
double area = PI * r * r;
System.out.print(area);            //12.56

System.out.println(Math.PI);    //3.141592653589793
System.out.println(Math.E);    //2.718281828459045

2.3、数据类型

Java数据类型:基本数据类型(原始数据类型) 和 引用数据类型

1.基本数据类型(8种):Boolean byte short char int float long double

数据类型大小取值范围
byte1字节8位-128(2^7) ~ +127(2^7-1)
short2字节16位-32768 (-2^15) ~ + 32767 (+2^15-1)
int4字节32位-2147483648(-2^31) ~ + 2147483647(2^31-1)
long8字节64位-2^63 ~ + 2^63-1
float4字节32位浮点数1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38
double8字节64位浮点数4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308
char2字节(char是单字符的一种基本数据类型)0~65535

取值范围:负2的(类型位数 - 1)次幂 到 (2的(类型位数 - 1)次幂) - 1

小数点的数值默认是double

练习:

package day02;
public class student{
    public static void main(String\[\] args) {

        /*
         * int double long float
         */

        int num = 10;
        float a = 10;
        a = 12.2f;
        System.out.println("a :" + a);
        System.out.println("num的值为:" + num);

        /*
         * char
         */
        double aa = 11.1;
        int cc = (int)aa;
        System.out.println("---------"+cc);
        char b = 33221;
        char c = '中';
        System.out.println("强转c : " + (int)c);
        System.out.println("b : " + b);

        //byte
        //byte d = 128;    // error  因为byte的范围是-128~127
        byte d1 = (byte)200;   // 规律:超出byte取值范围:+值-128+(-128)   200-128-128
        System.out.println(d1);  
        byte d5 = (byte)-300;   // 规律:超出byte取值范围: -值-(-128)+ 128    -300-(-128)+128
        System.out.println("d5 : " + d5);

        byte d2 = 2;
        byte d3 = 3;
        byte d4 = (byte)(d2 + d3);      // byte 相加可能超出byte的取值范围
        System.out.println("d2 : " + d2);
        System.out.println("d4 : " + d4);

    }
}

boolean
booLean a = true;boolean b = false;
在java中,boolean值只能是true(真)和false(假),
boolean 创建的对象的值默认是 false,

2.类型转换

自动类型转换:大类型变量 = 小类型变量

  1. 两种类型要兼容:数值类型(整型和浮点型)互相兼容
  2. 目标类型大于源类型

强制类型转换: 小类型变量=(小类型)大类型变量
例如:

// 自动类型转换
int num = 10;
double num2 = num;
System.out.println("---"+ num2);        //输出10.0
// 强制类型转换
double a = 11.1;
int c = (int)a;
System.out.println(c);        //输出11,精度丢失了
char c = '中';
System.out.println("强转c : " + (int)c);

3.引用数据类型:String

String是一个对象,
String的默认值也是null,
‘ ‘表示 char字符,这个数据是一个符号
“ “表示 String字符串,一系列字符

连接符:字符串的连接使用:“+”操作符

案例:

package day03;
public class Demo1 {
    public static void main(String[] args) {
        // 通过需求分析,需定义三个变量
        double score = 98.5;
        String name = "易建联";
        char sex = '男';
        System.out.println("姓名:" + name + "\n性别:" + sex + "\nJava成绩:" + score);
        System.out.println("一名叫" + name + "的中国" + sex + "球员,成绩是:" + score);
    }
}

2.4.转义符

转义符:\n \t \r
\n : 换行,将当前位置移动到下一行开头
\t : 制表符,8个空格,相当于Tab
\r : 回车,将当前位置移动到本行开头

2.5.输入工具类:Scanner

使用Scanner:
第一步:导入Scanner类
import java.util.Scanner;

第二步:创建Scanner对象
Scanner input = new Scanner(System.in);

第三步:获得键盘输入的数据
int now = input.nextInt();

package day03;
import java.util.Scanner;
public class Demo5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 通过需求分析,需定义三个变量
        System.out.print("请输入分数:");
        double score = scanner.nextDouble();
        System.out.print("请输入姓名:");
        String name = scanner.next();
        System.out.print("请输入性别:");
        String sex = scanner.next();

        System.out.println("一名叫" + name + "的中国" + sex + "球员,成绩是:" + score+"分");
    }
}

Scanner中输入跳过的原因?

Scanner 类对象中的 nextDouble() 和 nextLine() 方法内部读取原理不同导致跳过输入过程,当先输入分数时调用的是nextDouble()方法,读取完后剩下一个Enter回车符,接下来输入姓名的时候,调用的是nextLine()方法,这时刚好有一个Enter回车符,它便以为输入完了就直接将Enter前面的空串读取进去了,所以我们看着的效果就像是直接跳过了输入名字过程。解决方法如下:

1,在调用nextInt()方法之后,nextLine()方法之前,加上一个语句 scanner.nextLine(); 将nextInt()读取后剩下的Enter回车符先读取掉。

Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int snum = scanner.nextInt();
scanner.nextLine();//将回车符读取出来
System.out.println("请输入姓名:");
String name = scanner.nextLine();
System.out.println("你的姓名和学号为:"+name+"-"+snum);

2,使用 next() 方法之前代替 nexLine() 方法。

Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int snum = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();//使用next()方法之前代替nexLine()方法
System.out.println("你的姓名和学号为:"+name+"-"+snum);

3,都使用nextLine()方法,赋值的时候再进行类型转换。

Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int snum = Integer.parseInt(scanner.nextLine());
System.out.println("请输入姓名:");
String name = scanner.nextLine();
System.out.println("你的姓名和学号为:"+name+"-"+snum);

2.6.运算符

1.赋值运算符 =

变量名 = 表达式;

2.算数运算符

基本的算术运算:+、-、* 、/、%、++、--
复合算术运算符:+=、-=、*=、/=、%=

package day03;
public class Demo6 {
    public static void main(String[] args) {
        int a = 9;
        int b = 4;

        // 方式1:a 和 b 的值互换 借助第三个参数
        int c = a;
        a = b;      // a = 4
        b = c;      // b = 9

        // 方式2:a 和 b 的值互换,加减
        a = a+b;    //13
        b = a-b;    // 9
        a = a-b;    // 4

        // 方式3:a 和 b的值呼唤,乘除
        a = a*b;    //36 = 4*9
        b = a/b;    //9 = 36/4
        a = a/b;    //4 = 36/9

        System.out.println("a = " + a +",b = " + b);
    }
}

%:取模运算

package day03;
public class Demo7 {
    public static void main(String[] args) {
        // % 取模运算:输出余数
        int a = 3 % 9;
        System.out.println(a);     // 3
        int b = 20 % 4;
        System.out.println(b);     //0
    }
}

++ , - -
++在前,先加1,后运算,++在后,先运算,后加1.
—在前,先减1,后运算,- -在后,先运算,后减1.

package day04;
public class Demo1 {
    public static void main(String[] args) {
        // ++ --
        int a = 5;
        int b = ++a;   // ++ 在操作变量的前面  前置:先执行++操作,再取值
        System.out.println("b = " + b); // b=6
        System.out.println("a = " + a); // a=6
        int c = a++;    //++ 在操作变量的后面  后置:先取值,再执行++操作
        System.out.println("c = "+ c);  // c=6
        System.out.println("a = " + a); // a=7
        a=a++;
        a=a++;
        System.out.println("a = " + a);// a=7
    }
}

+= , %=

package day04;
public class Demo2 {
    public static void main(String[] args) {
        int a = 5;
        a += 3; // 等同于  a = a+3;
        System.out.println(a);
        int b = 5;
        b %= 2;     // b = b%2;  = 1
        int c = b % 3;  // c=1%3; =1
        int d = 3 % b;  // d=3%1; =0
        System.out.println(b);  //1
        System.out.println(c);  //1
        System.out.println(d);  //0
        System.out.println(5%3);    // 5%3=2  :5除3商1余2
        System.out.println(3%5);    //3%5=3  :3除5商0余3
        System.out.println(5%20);   //5%20=5  :5除20商0余5
        System.out.println(5%8);    //5%8=5  :5除8商0余5
    }
}

3.关系(比较)运算符

比较运算符,比较的一定是数字,运算的结果一定是Boolean类型。

运算符含义例子结果
==等于5 == 6false
!=不等于5 != 6true
>大于5 > 6false
<小于5 < 6true
>=大于等于5 >= 6false
<=小于等于5 <= 6true

注意:
1.=为赋值运算符,==为等于运算符
2.关系表达式的结果为布尔值
3.>、<、>=、<= 运算符的优先级别高于==、!=
4.>、<、>=、<=运算符只支持数值类型的数据比较

public class Demo3 {
    public static void main(String[] args) {
        boolean a = 4==5;
        System.out.println(a);
    }
}

4.逻辑运算符

逻辑运算符,运算的数据是Boolean类型,运算的结果也是Boolean类型。
逻辑运算符中短路要注意。

运算符含义运算规则
&&两个操作数都是true,结果才是true
两个操作数一个是true,结果就是true
取反,非操作数为false,结果为true

注意:
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;
优先级别 ! > && > ||

package day04;
public class Demo4 {
    public static void main(String[] args) {
        boolean a = true && false;
        System.out.println(a);      // false
        boolean b = false || true;
        System.out.println(b);      // true;
        boolean c = !false;
        System.out.println(c);      // true

        int aa = 8;
        int bb = 4;
        boolean cc = aa > bb && aa < bb;    // 组合运算符的表达式
        System.out.println("cc : " + cc);   // false
    }
}

5.位运算符^ ~ << >> >>> & |

位运算符:被运算的数据先转化为二进制,然后按每一位运算。

(1)亦或法 :相同为0,不同为1

package day04;
public class Demo5 {
    public static void main(String[] args) {
        int a = 8;
        int b = 5;
        // 不适用第三个变量来交换数据,效率低

        // 亦或法   ^
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("a = " + a);     //a=5
        System.out.println("b = " + b);    //b=8
    }
}

(2)大小写转换:通过ascall码和位运算符(亦或法)实现

package day04;
public class Demo6 {
    public static void main(String[] args) {
        // I am Student
        // i AM sTUDENT
        // 大小写转换
        char k = 'a';
        char m = 'A';
        char j = (char)(k - 32); // 小写转大写-32,大写转小写+32
        System.out.println("k的ascall码 :" + (int)k);
        System.out.println("m的ascall码 :" + (int)m);
        System.out.println(j);      // A

        char kk = 'j';
        char mm = (char)(kk ^ ' '); // ' '空格的ascall码是32
        System.out.println(mm); // J
        System.out.println("空格的ascall码是:"+(int)' ');      // 32
    }
}

(3)移位

package day04;
public class Demo7 {
    public static void main(String[] args) {
        int a = 2;
        // 移位
        // 2的二进制是:10 8的二进制是:1000  16的二进制是10000
        a = a<<4;
        System.out.println(a);  // 32
    }
}

5.条件运算符,三元运算符

也称为三目(三元)运算符
条件?值1:值2:在某种条件成立的时候取值1,否则不成立取值2.

int min;
min = 5 < 7 ? 5 : 7;
System.out.println(min);
min = 10 < 7 ? 10 : 7;
System.out.println(min);

6.运算符优先级

单目运算符包括! ++ —,优先级别高
优先级别最低的是赋值运算符
可以通过()控制表达式的运算顺序,()优先级最高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
算术运算符 > 关系运算符 > 逻辑运算符

拓展
1.运算符的目:简单了解一下

运算符能连接操作数的个数,称为运算符的目。Java 语言中运算符的目有三种:
(1)单目运算符:只能连接一个操作数,如“++” “—“ “!” 等。
(2)双目运算符:可以连接两个操作数,Java语言中的多数运算符属于双目运算符。如“+”“-““*”“/”等。
(3)三目运算符:可以连接三个操作数。Java语言中只有一个三目运算符,即条件运算符。

2.7.练习

复制package day02;

import java.util.Scanner;

public class Practice01 {
    public static void main(String[] args) {
        System.out.println("请输入4位会员卡号:");
        Scanner scanner = new Scanner(System.in);
        int cardId = scanner.nextInt();
        System.out.println("会员卡号是:" + cardId);
        int qian = cardId / 1000 % 100;
        int bai = cardId / 100 % 10;
        int shi = cardId / 10 % 10;
        int num = cardId % 10 ;
        int sum = qian + bai + shi + num;
        System.out.println("千位数: " + qian +",百位数:" + bai + ", 十位数:" + shi + ", 个位数:" + num);
        System.out.println("会员卡号"+cardId+"各位之和:" + sum);
        if(sum > 20){
            System.out.println("会员卡号"+ cardId + "的会员,您中奖了!奖品是MP3!");
        }else{
            System.out.println("谢谢参与!");
        }
    }
}

3.编程思想

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值