1 变量,类型,运算符,表达式

配套视频教程

本文B站配套视频教程

image.png

常量

(1)在程序执行的过程中,其值不发生改变的量
(2)字面值常量
A:字符串常量 "hello"
B:整数常量 12,23
C:小数常量 12.345
D:字符常量 'a','A','0'
E:布尔常量 true,false
F:空常量 null(后面讲)

/*
    常量:
        在程序执行过程中,其值不发生改变的量。
        
    分类:
        A:字面值常量
        B:自定义常量(后面讲)
        
    字面值常量
        A:字符串常量    用双引号括起来的内容。
            举例:"hello","world","HelloWorld"
        B:整数常量    所有的整数
            举例:100,200
        C:小数常量    所有的小数
            举例:10.23,110.11
        D:字符常量    用单引号括起来的内容
            举例:'a','A','0'
            错误的:'ab'
        E:布尔常量    比较特殊
            举例:true,false
        F:空常量    后面讲
            举例:null
*/
class ConstantDemo {
    public static void main(String[] args) {
        //字符串常量的输出
        System.out.println("hello");
        
        //整数常量的输出
        System.out.println(100);
        
        //小数常量的输出
        System.out.println(100.10);
        
        //字符常量的输出
        System.out.println('a');
        System.out.println('A');
        System.out.println('0');
        //这个是有问题的,字符常量有单引号,字符串常量用双引号
        //System.out.println('ab');
        
        //布尔常量的输出
        System.out.println(true);
        System.out.println(false);
    }
}

变量的三要素

类型,变量名,保存的值

基本数据类型

  1. 数值
  • 整数 byte,short,int,long
    25,-987, 0
  • 小数 float,double
    5.23,3.14
  1. 字符串
  • 字符串 String
    "你好","中国的首都"
  • 字符 char
    'a', '的'
  1. 布尔型
    boolean

使用一个变量的步骤

  1. 定义一个变量
    数据类型 变量名;
    int money;

2.给变量赋值
变量名 = 数值;
money = 1000 ;

第一步和第二步可以合并
数据类型 变量名=数值;
int money = 1000;

3.使用这个变量
System.out.println(money );

    int age;//定义一个变量
    age = 34; //给变量赋值
    System.out.println(age); //在屏幕上输出变量的值
    
    String name="zhangsan";//定义一个变量,并且马上给其赋值
    System.out.println(name); //在屏幕上输出变量的值

定义几个变量

手机的品牌brand是华为,价格(price)2500,重量(weight)0.125千克,
颜色(color) 红

String brand = "华为";
int price = 2500;
double weight = 0.125;
char color = '红';

   System.out.println("手机品牌:" + brand);
  System.out.println("手机价格:" + price);
image.png

获取用户输入

使用Scanner类

Scanner sc = new Scanner(System.in);


/*
 * Scanner:用于接收键盘录入数据。
 * 
 * 前面的时候:
 *         A:导包
 *         B:创建对象
 *         C:调用方法
 * 
 */
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);

        int x = sc.nextInt();
        
        System.out.println("x:" + x);
    }
}
        Scanner scanner = new Scanner(System.in);//定义一个从屏幕获得输入信息的变量scanner

        System.out.println("请输入您的年龄");
        int age = scanner.nextInt();//获得用户从屏幕输入的一个整数,有一个阻塞的副作用,通俗点说,就是程序卡在这里了

        System.out.println("您的年龄是" + age);
        System.out.println("请输入您的姓名");
        String name = scanner.next();//获得用户从屏幕输入的一个字符串,有一个阻塞的副作用,通俗点说,就是程序卡在这里了

        System.out.println("欢迎您" + name);

Scanner类的hasNextInt()和nextInt()方法


import java.util.Scanner;

/*
 * 基本格式:
 *         public boolean hasNextXxx():判断是否是某种类型的元素
 *         public Xxx nextXxx():获取该元素
 * 
 * 举例:用int类型的方法举例
 *         public boolean hasNextInt()
 *         public int nextInt()
 * 
 * 注意:
 *         InputMismatchException:输入的和你想要的不匹配
 */
public class ScannerDemo {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);

        // 获取数据
        if (sc.hasNextInt()) {
            int x = sc.nextInt();
            System.out.println("x:" + x);
        } else {
            System.out.println("你输入的数据有误");
        }
    }
}

Scanner类中的nextLine()产生的换行符问题

import java.util.Scanner;

/*
 * 常用的两个方法:
 *         public int nextInt():获取一个int类型的值
 *         public String nextLine():获取一个String类型的值
 * 
 * 出现问题了:
 *         先获取一个数值,在获取一个字符串,会出现问题。

 * 如何解决呢?
 *         A:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
 *         B:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
 */
public class ScannerDemo {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);

        // 获取两个int类型的值
        // int a = sc.nextInt();
        // int b = sc.nextInt();
        // System.out.println("a:" + a + ",b:" + b);
        // System.out.println("-------------------");

        // 获取两个String类型的值
        // String s1 = sc.nextLine();
        // String s2 = sc.nextLine();
        // System.out.println("s1:" + s1 + ",s2:" + s2);
        // System.out.println("-------------------");

        // 先获取一个字符串,在获取一个int值
        // String s1 = sc.nextLine();
        // int b = sc.nextInt();
        // System.out.println("s1:" + s1 + ",b:" + b);
        // System.out.println("-------------------");

        // 先获取一个int值,在获取一个字符串,这里会出问题
        // int a = sc.nextInt();
        // String s2 = sc.nextLine();
        // System.out.println("a:" + a + ",s2:" + s2);
        // System.out.println("-------------------");

        int a = sc.nextInt();
        Scanner sc2 = new Scanner(System.in);
        String s = sc2.nextLine();
        System.out.println("a:" + a + ",s:" + s);
    }
}

运算符

  1. 赋值运算符
    =

员王浩的Java成绩是80分,学员张萌的Java成绩与王浩的相同,输出张萌的成绩

int wangScore = 80;    //王浩成绩
int zhangScore;        //张萌成绩
zhangScore = wangScore; 
System.out.println(“张萌成绩是" +zhangScore);

2.算数运算符
+,-,*,/,%

        System.out.println(1600%5);//0-4
        System.out.println(3%5);//3
        System.out.println(3%2);//1
        System.out.println(21%5);//1
        System.out.println(13%4);//1
//        System.out.println(m%n);//0----n-1
        System.out.println(23%7);//2
        System.out.println(25%7);//4

一个问题

用户在屏幕上输入一个天数,程序回答出是几周零几天?

   //  用户在屏幕上输入一个天数,程序回答出是几周零几天?
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入天数");
        //获得用户输入的天数dayCount
        int dayCount = scanner.nextInt();
        System.out.println(dayCount+"天是"+ dayCount/7 + "周零" +  dayCount%7 + "天");

关系运算符

比较高低、大小、长短等
张三的考试成绩是否比李四高
大象是否比乌龟更长寿
篮球跟地球一样大吗

,<
==,!=
=,<=
boolean (布尔)类型
boolean类型的值:
真:true
假:false

表达式(3+40%6)>(9/2*3)的结果是什么?

false

从控制台输入张三同学的成绩,与李四的成绩(80分)比较,输出“张三的成绩比李四的成绩高吗?” 的判断结果

image.png
int liSi = 80;          //学员李四成绩
boolean isBig ;    
        
Scanner input = new Scanner(System.in);   
System.out.print("输入学员张三成绩: ");       
int zhangSan =  input.nextInt();                     //输入张三的成绩 
        
isBig = zhangSan > liSi ; 
System.out.println( "张三成绩比李四高吗 ? "+isBig );    //输出比较结果

表达式

y = x-9+(x +90);

练习

商场推出幸运抽奖活动
抽奖规则:
顾客的四位会员卡号的
各位数字之和大于20,
则为幸运顾客。

image.png

类型转换

自动类型转换

某班第一次Java考试平均分81.29,第二次比第一次多2分,计算第二次考试平均分?

double firstAvg = 81.29;  //第一次平均分
  double secondAvg;         //第二次平均分
  int rise = 2;

  secondAvg = firstAvg + rise;
        
  System.out.println("第二次平均分是:"  + secondAvg);

规则1:如果一个操作数为double型,则整个表达式可提升为double型

规则2:满足自动类型转换的条件
两种类型要兼容:
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型

强制类型转换

(类型名)表达式

int  b  = (int)10.2;
double a = 10;
int c = (int)a;

去年Apple笔记本所占市场份额是20,今年增长的市场份额是9.8,求今年所占份额?

int before = 20;     //apple笔记本市场份额
double rise = 9.8;     //增长的份额

int now = before+ (int)rise;      //现在的份额

当强制转换时,精度有损失

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容