1.变量
1.1概念
1.概念:计算机内存中的一块存储空间,是存储数据的基本单元。
1.2变量的定义方式
变量类型 变量名;
变量名 = 值;
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(“条件成
立”)));
编译不通过,语法错误。三目运算符条件后的表达式只能为字符、字符串、数字、对
象等,不能执行输出语句。