一、变量
1.1 变量的声明与赋值
变量是内存中的一块存储空间,可以保持数据。
1.2 变量三要素
数据类型、变量名、数值
- 变量类型用来规范变量数据的种类
- 变量名用户来寻找空间地址
- 值应该和类型相吻合
声明语法:
//数据类型 变量名
int age;
//数据类型 变量名 = 初始值
int age = 10;
//数据类型 变量名a,变量名b
int age,name
//数据类型 变量a = 初始值 ,变量名b
int age = 10,height;
注意:变量的输出不加“ ”或则‘ ’,加了就代表是一个字符串或者字符
1.3 变量的作用域
1)全局变量:定义在类以内,方法以外,供多个方法使用,有默认值。
2)局部变量:定义在方法内,只能在该方法内使用,先声明后使用,使用前必须先复制,没有默认值。
3)如果全局变量与局部变量重名,遵循就近原则
4)相同的作用域不允许重复定义
1.4 变量的数据类型
java中分为基本数据类型和引用数据类型
- 基本数据类型:byte、short、int、long、float、double、char、boolean
- 除开基本数据类型,都是引用数据类型。
- 引用 数据类型中的包装数据类型:Byte、Short、Integer、Long、Float、Double、Character、Boolean
1.5 变量使用的细节
public class TestDataType{
public static void main(String[] args){
//byte:注意范围-128——127
byte num = 120;
//short:基本不用
short num1 = 11223;
//int:通常用它
int num2 = 19023;
//long:int搞不定就用它
long num3 = 9333333333333333333333333L
//小数通常使用double,double 可加(可不加)d D,
//float可加F f
double d1 = 121.33
float f1 = 123.33f;
//boolean存储真和假,只有true 和false两个值
boolean isVip = true;
boolean isNull = false;
//1.1 char 字符[一个字符]
char ch1 = 'A';
//1.2 char 字符[Unicode编码]
char ch2 = '\u91cd';
//1.3 char 字符[转义字符]
// \q 表示unicode \' 单引号 \\ 斜杠 \n 回车 \t 制表符
char ch3 = '\\'
// 1.4 char 字符[ascll码]
char ch4 = 97 //a
//2.1定义一个字符串
String name = "李四";
}
}
**1.6 String的初步使用**
```java
String name ="大哥好,qiuyan"
1.7 标识符
凡是自己取得名字都叫标识符,存在命名规范
- 有数字、字母、下划线、$ 组成
- 不能以数字开头
- 做到见名知义
- 建议使用驼峰命名法
经验:类名首字母大写,变量名、方法名首字母小写,枚举、常量全大写
二、关键字
被java语法使用的单词,或者保留的单词都叫关键字,关键字不可以用来作为标识符。
三、常量
不可改变值的变量,现在的常量为字面量,比如:“hello” 、123、‘a’
- 浮点数字面量,默认类型为double
- 正数字面量,默认值为int
四、数据类型转换
通常数据类型转换有两种形式
- 自动类型提升
- 强制类型转换
自动类型提升:安全的,自动转换
byte b= 12;
int n = b;
System.out.println(n);
强制类型提升:不安全,手动完成
int mm = 12;
byte bb = (byte) mm;
System.out.println(bb);
总结
byte > short > int > long > float > double
- 用箭头右边类型的变量保存左边类型的变量就是自动类型提升
- 用箭头左边类型的变量保存右边类型的变量就是强制类型转换
五、运算符
有了变量,可以存储数据,但是一格功能执行需对变量里的数据做运算,需要引入运算符,java中的运算符和其他几乎所有编程语言的运算一致。
1. 赋值运算符 =
把等号右边的值赋值给左边的变量
2. 算术运算符
’+‘ 加号
’-‘减号
’*‘乘号
’/‘除号
%模(取余)
’/‘号运算结果的精度取决于参与运算的最高精度。
3. 关系运算符,返回值为布尔类型(boolean)
'>(大于) >=(大于等于) <(小于) <=(小于等于) ==(等等于) !=(不等于)
int m =10,n =20;
System.out.println( m>n );
System.out.println( m>=n );
System.out.println( m<n );
System.out.println( m<=n );
System.out.println( m==n );
System.out.println( m!=n );
4. 逻辑运算符
&& 与 || 或 !非
int age =19;
int money = 10;
System.out.println( age>20 && money>5 ); //false
System.out.println( age>20 || money>5 ); //true
System.out.println( !(age>20) ); //true
&& : 同真则真,一假则假。
|| : 一真则真,同假则假。
!: 真假互换。
短路问题: 如果可以提前判断最后的结果,则放弃后续条件执行,这种现象为短路。
& |
运算法则和&& || 一致区别在于 非短路。
5. 复合赋值运算符
算术运算符和赋值运算符的综合写法,简化运算有要赋值,或者说是在现有变量基础做运算。
+= -= *= /= %=
int nb = 110;
System.out.println( nb+=20 ); // nb = nb+20;
System.out.println( nb-=40 ); // nb= nb-20;
System.out.println( nb/=2 ); // nb=nb/2;
System.out.println( nb*=2 ); // nb =nb*2;
System.out.println( nb%=10 ); // nb = nb%10;
6.自增自减
++ –
++ --对于操作数来说,要加1 要么减1 ,对于表达式来说,前后有影响, 在前有立即计算性,在后有延时计算性。
int c=5; int d=10;
int f = (++c) - d;
System.out.println(f);// -4
int c=5; int d=10;
int f = (c++) - d;
System.out.println(f);// -5
7. 三目运算符
具有判断能力
表达式?A:B
如果表达式成立返回A,不成立返回B
int level =3; // 3等级 A B C
String cc= level==1?"等级A": level==2?"等级B":"等级C" ;
System.out.println(cc); // 等级C
8.位运算符
按位与 | 按位或 | 按位异或 | 按位取反 | 左移 | 右移 | 无符号右移 |
---|---|---|---|---|---|---|
& | | | ^ | - | << | >> | >>> |
同一则一 | 有1则1 | 不为1相同为0 | 0、1互换 | 向左移动 | 向右移动 | 向右移动不保留负数 |
byte a = 6; // 00110
byte b = 2; // 00010
--------------------------
00010 2
byte a = 6; // 00110
byte b = 2; // 00010
--------------------------
00110 6
byte a = 6; // 00000110
00000011 除以2
byte a = 6; // 00000110
00001100 乘以2
9. 控制台录入
- 导入包 import java.util.Scanner;
- 创建对象 Scanner SC = new Scanner(System.in);
- 对象调方法 int num= sc.nextInt()
// 导入某个包下的代码(类)
import java.util.Scanner;
//测试录入操作
public class UseSCanner{
public static void main(String[] agrs){
// 需要实现输入,很定有对象搞定,new 一个。
Scanner sc = new Scanner( System.in );
// 对象可以执行功能(方法), 对象调用输入相关方法会造成线程的阻塞。
System.out.println("输入一个整数a");
int a = sc.nextInt();
System.out.println("输入一个整数b");
int b = sc.nextInt();
System.out.println("输入一个小数");
double c = sc.nextDouble();
System.out.println("输入一个字符串");
String d = sc.next();
System.out.println( (a+b+c)+d );
}
}
2.0
package com.qf;
import java.text.DecimalFormat;
import java.util.Scanner;
public class test {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.00");
System.out.print("请输入您的身高:");
double height = sc.nextDouble();
System.out.println();
System.out.print("请输入您的体重:");
double weight = sc.nextDouble();
double result = weight / (height*height);
String re = result <= 9.4 ? "偏瘦" :
result >= 18.5 && result <= 23.9 ? "正常" : result >= 24.0 && result <= 27.9 ? "过重" : result >= 28.0 ? "肥胖" : "";
System.out.println("您的BMI值为:" + df.format(result) +","+re);
}
}