1.变量

1.1概念

1.概念:计算机内存中的一块存储空间,是存储数据的基本单元。

1.2变量的定义方式

1.先声明,后赋值

变量类型 变量名;

变量名 = 值;

2.连声明带赋值,一条语句写完

变量类型 变量名 = 值;

3.多个同类型的变量同时声明和赋值

变量类型 名称1,名称2,名称3 = 值 ,名称4,名称5 = 值;

1.3数据类型

1.基本数据类型(四型八种)

(1)整数(byte、short、int、long)

Java中整数默认的类型就是int,如果需要将一个超出int范围的数字存放到long中,需要在值后加L,大小写都可以(推荐大写)。如果是byte 、short 直接赋值则不需要加东西,前提是值在其取值区间。

(2)小数(float、double)

Java中小数的类型默认是double的,如果需要定义一个float类型的变量,需要在值后加F,大小写均可以(推荐大写)

(3)布尔(boolean)

取值只有真true和假false

(4)字符(char)

一个字母/中文/数字才可以存入char,必须使用单引号包括或者直接复制为数字或者Unicode码表的对应十六进制的值。

1)字符赋值:char c1 = 'A'; (通过''描述为字符赋值)

2)整数赋值:char c2 = 65; (通过十进制数65赋值对应的ASCII值。

3)进制赋值:char c3 = '\u4f60';(通过16进制赋值)

注意:

short b = 65;

char c = b; X错误,因为char为无符号数,不能为负,而short可能为负值。

2.引用数据类型

(1)字符串:String

任何在英文双引号包括的内容都属于字符串

(2)数组:

(3)对象:

1.4单位换算

1字节 = 8 位

1 byte = 8 bit

1024 byte = 1 kb

1024 kb = 1M

1024 M = 1 GB

1024 GB = 1 TB

2.常用编码类型

GBK国际扩展板 收录了大多数的中文,并且支持简体和繁体

GB2312收录了大多数的中文 只有简体

UTF-8 Unicode码表

ANSI在不同的操作系统表示不同的编码类型 中文win10表示GBK

ISO-8859-1 可以转换乱码的文字为正常文字

3.转义字符

用于描述一些特殊字符,比如单引号,双引号等

转义字符描述
\n 换行符
\t 缩进(制表位)
\ 反斜线
' 单引号
'' 双引号

4.类型转换

1.自动类型转换 自动提升 (1)两种类型要兼容 (2)目标类型要大于源类型

2.强制类型转换 (可能造成精度问题) (1)两种类型要兼容 (2)目标类型(等号左边的) 小于源类型(等号右边的)

整数和小数也可自动转换,如int i3=35; double d1=i3;

自动提升,手动下降

自动类型提升(所有数值中double最大,所有整数中,long最大)

1.进行算数运算时: 两个操作数有一个为double,计算结果提升为double。 如果操作数中没有double,有一个为float,计算结果提升为float。 如果操作数中没有float,有一个为long,计算结果提升为long。 如果操作数中没有long,有一个为int,计算结果提升为int。 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。

*特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

5.运算符

1.算数运算符:

两个操作数进行计算

操作符 描述
+ 加、求和
- 减、求差
* 乘、求积
/ 除、求商
% 模、求余

一元运算符(只有一个操作数)

操作符 描述
++ 递增,变量值+1
- - 递减,变量值-1

2.赋值运算符:

等号右边赋值给等号左边

操作符 描述
= 直接赋值
+= 求和后赋值
-= 求差后赋值
*= 求积后赋值
/= 求商后赋值
%= 求余后赋值

3.逻辑运算符

两个boolean类型的操作数或表达式进行逻辑比较

操作符 语义 描述
&& 与(并且) 两个操作数,同时为真,结果为真
|| 或(或者) 两个操作数,有一个为真,结果为真
! 非(取反) 意为“不是”,真即是假,假即是真

4.三元运算符

将判断后的结果赋值给变量

操作符 语义 描述
? : 布尔表达式?结果1:结果2 当表达式结果为真,获得结果1 当表达式结果为假,获得结果2
public class Test9{
    public static void main(String [] args){
        // 运算符  + - * / %
        int a = 20;
        int b = 6;
        int c =  a  + b;
        System.out.println(c);
        System.out.println(a + b);
        
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        
        // 20 % 3   5 % 3 
        System.out.println(a % b);
        
        // ++ 表示自增1  -- 表示自减1
        // ++ 或者 -- 单独作为一条语句书写 写在前 在后 没有区别
        // 不单独作为一条语句 书写在前在后是有区别的
        // 书写在前表示先自增或者自减 再赋值
        // 书写在后表示先赋值 再自增或者自减
        int d = 10;
        int f = 12;
        ++d;
        --f;
        // d++;
        // f--;
        System.out.println(d);
        System.out.println(f);
        System.out.println("======================");
        
        int numa  = 20;
        int numb = numa++;
        System.out.println("numa是取值是" + numa);
        System.out.println("numb的取值是" + numb);
        
        System.out.println("======================");
        int numc = 23;
        int numd = ++numc;
        System.out.println("numc是取值是" + numc);
        System.out.println("numd的取值是" + numd);
        
        System.out.println("======================");
        int numf = 56;
        numf += 20; // numf = numf + 20;
        System.out.println("numf的取值是" + numf);
        
        numf -= 23; // numf = numf - 23;
        System.out.println("numf的取值是" + numf);
                
        numf *= 2; // numf = numf * 2;
        System.out.println("numf的取值是" + numf);
        
        numf /= 2; // numf = numf / 2;
        System.out.println("numf的取值是" + numf);
                
        numf %= 3; // numf = numf % 3;
        System.out.println("numf的取值是" + numf);
        System.out.println("======================");
        
        int n1 = 12;
        int n2 = 23;
        System.out.println(n1 > n2);
        System.out.println(n1 < n2);
        System.out.println(n1 >= n2);
        System.out.println(n1 <= n2);
        System.out.println("======================");
        // java中一个=号表示赋值
        // 两个=号表示两边的表达式或者操作数是否相等
        System.out.println(n1 == n2);
        System.out.println(n1 != n2);
        System.out.println("======================");
            
        int a1 = 23;
        int b1 = 35;
        int c1 = 23;
        // && 表示两个表达式都成立 结果才成立
        // 如果有一个为false 则整个表达式为false
        System.out.println(a1 < b1 && c1 > b1);
        // || 表示两个表达式有一个成立 则整个表达式为真 
        // 
        System.out.println(a1 < b1 || c1 > b1);
        System.out.println("======================");
            
        System.out.println(a1 <= 15 ? "成立" : "不成立");    
        String info = a1 < 18 ? "成年" : "未成年";
        System.out.println(info);
    }
}

6.控制台输入

我们可以通过程序使用户在控制台输入一些内容,我们获取到,可以打印,或者进行其他的计算

使用JDK提供的Scanner类,位于java.util包中

导包的位置在声明包之后,在声明类之前

// package永远在第一行
import java.util.Scanner;

public class Test10{
    public static void main(String [] args){
        // 需求:让用户从控制台输入信息
        // 程序获取到信息 并且打印
        // 没有nextChar() 
        Scanner input = new Scanner(System.in);//创建一个扫描器 用于获取用户输入的内容
        System.out.println("请输入你的名字");
        String name = input.next();
        System.out.println("你输入的名字是" + name);
        System.out.println("请输入你的年龄");
        int age = input.nextInt();
        System.out.println("你输入的年龄是" + age);
        System.out.println("请输入你的薪资");
        double salary = input.nextDouble();
        System.out.println("你输入的薪资是" + salary);
        
        System.out.println("请输入你的性别");
        String sex = input.next();
        char newSex = sex.charAt(1); // 表示将你输入的字符串的第一个字符取出来存入newSex中
        System.out.println(newSex);
    }
}

每日一练

1.变量的命名规范
2.包名的命名规范
3.类名的命名规范
4.自动类型转换的前提条件?
5.强制类型转换的写法?
6.Scanner类的作用,需要导入哪个包?
7.++表示什么意思?++在前在后的区别
++在前先++在执行其他的,++在后,在执行其他的,再++
8.a*=3表示什么意思?
9.&&和&的区别?
10.||和|的区别?
11.以下语句将执行什么?
System.out.print(20==20?(System.out.print(“条件成立”)):(System.out.print(“条件成
立”)));

解答

1.变量的命名规范
  (1)可以由字母、数字、_(下划线)、$(美元符号)、(¥)人民币符号组成,
  但不能以数字开头。
  (2)不能与关键字、保留字重名
  简记:美、人、字、下、数、骆驼(camel,驼峰命名法);
2.包名的命名规范
  域名倒置:www.baidu.com.cn -> cn.com.baidu.xxx
  全部小写
  不能以.(点)开头或者结尾,可以包含.(点)
3.类名的命名规范
  首字母大写,以后每遇到一个单词首字母都大写
4.自动类型转换的前提条件?
  两种类型要兼容
  目标类型大于源类型
5.强制类型转换的写法?
  在源类型或者值之前加上小括号(转换的类型);如:float a=(float)3.2;
6.Scanner 类的作用,需要导入哪个包?
  Scanner 类用来在接收键盘键入的值。需要导入 java.util.Scanner;
7.++表示什么意思?++在前在后的区别
  ++在前表示先自增再执行其他的,++在后,先执行其他的,再自增
8.a*=3 表示什么意思?
  a = a * 3;
9.&&和&的区别?
  && 短路与 要求两个或者多个表达式都成立结果才为真,如果第一个表达式不成
立,那么将不再执行后续的表达式,有短路的效果.
  & 与 要求两个或者多个表达式都成立结果才为真,无论第一个表达式是否成立,都
将执行完所有的表达式,没有短路的效果
10.||和|的区别?
  || 短路或 要求有一个表达式成立则结果为真,如果第一个表达式成立,那么将不再
执行后续的,有短路的效果
  | 或 要求有一个表达式成立则结果为真,无论第一个表达式是否成立,都将执行完所
有的表达式,没有短路的效果
11.以下语句将执行什么?
System.out.print(20==20?(System.out.print(“条件成立”)):(System.out.print(“条件成
立”)));
  编译不通过,语法错误。三目运算符条件后的表达式只能为字符、字符串、数字、对
象等,不能执行输出语句。

posted on 2020-07-22 21:00  zitian246  阅读(143)  评论(0编辑  收藏  举报