变量
变量存在于内存中(程序结束、计算机关机之后 变量失效)
1.声明数据类型(整数、小数、字符串、。。。。)
2.赋值 符号(=)将右侧给到左侧
3.使用
Java数据类型
引用数据类型(对象类型):String .....字符串(放任意字符,并且需要用 双引号引起来)
原生数据类型(基本数据类型):8个,
数字:
整数:byte<short<int<long 默认int
小数:float<double 默认double
一般性原则: 尽量使用最小范围
非数字:
字符char :只能放一个字符,必须用单引号
布尔Boolean: 只有True /False
计算机是二进制:0 1(连通 断开)
字节 1 byte= 8 bit (-128-- 127)//一个bit是两位 2的8次方除以2
短整数 short = 2byte(16bit)
整数 int=4byte(32bit)
长整数 long=8byte(64bit)
float = 4byte
double=8byte
赋值
变量名规范规则:
(建议)1.首字母小写的 驼骆峰 myFristName
注意
float f = 123.4 报错
因为默认为double须在后加f
float f = 123.4f
整数默认int但是=自带转换器所以不报错
2.变量名不能重复
3.变量区分大小写(Java区分大小写)
4.(局部)变量用之前得赋初值
5.变量的范围:最近一对大括号{}
强制性命名规则
首字母 + 其他
myfirstnum = m + yfirstnum
a.首字母 :各国语言 ;中文;英文;钱¥ (不能数字)
b.其他 : a(首字母的范围) + 数字
c.不能是关键字
java可以直接表示的进制
二进制:0b数字
0b011表示十进制3 (2的零次方)1 *1+ (2的一次方)2 *1=3
十进制:默认
98 8* 1(10的0次方) + 9 * 10(10的1次方)=98
八进制:0数字
011 表示9 8的0次方+ 8的一次方 = 9 072 (8的零次方)1*2 + (8的1次方)8 * 7=58
十六进制:0x数字 (0-9 A- F)
0xA2 2*1+10*16
示例
使用以下变量存储手机信息 并打印输出
品牌 iPhone
尺寸 4.0
像素 1080px*768px
架构 5288
System.out.println("-------------------------");
String phone = "iphone" ;
double size= 4.0;
String px = "1080px*768px";
int price = 5288;
System.out.println(phone+","+size+","+px+","+price);
小红成绩80,小绿成绩比小红多10分,输出小绿成绩
System.out.println("-------------------------");
int xhSorce = 80;
int xlSorce = xhSorce+10;
System.out.println(xlSorce);
从控制台输出小红的三门课程成绩,计算:1.java课程和sql分数之差;2.3门课的平均成绩
从控制台输入:Scanner (属于jdk类库,需要手工引入)
自动导包问题:
开启:file-setting - Editor-general-auto import
注意:如果没有自动导入,可能原因就是该类在环境中纯在重名需要手动导入:alt+回车
默认包:java的默认包就是java.lang,即该包中的所有类会自动给导入
Scanner中有很多类型的输入方法,但是没有接受char的方法。
接收字符串:next(),nextline()
String name = input.next(); String name2 = input.nextLine();
区别:next()不接受空格回车 会把空格,回车当终止符号
nextline()接收空格回车
注意:
int是整数,所以int num= (1+1+2)/3,则num的值是1
Scanner input = new Scanner(System.in);
System.out.println("请输入姓名");
String name = input.next();
String name2 = input.nextLine();
System.out.println("请输入java成绩");
int javaSorce = input.nextInt();
System.out.println(javaSorce);
System.out.println("请输入sql成绩");
int sqlScore = input.nextInt();
System.out.println("请输入html成绩");
int htmlScore = input.nextInt();
int between =javaSorce - sqlScore;
System.out.println("java比sql多"+between);
int avgScore = (javaSorce + sqlScore + htmlScore)/3;
System.out.println("平均分:"+avgScore);
数据类型的转换:
自动转换
范围小的类型 可以自动转换为范围大的
double a = 3.14f;
范围小的类型 遇到范围大的类型自动转换为范围大的
int b =10 +3.14 ; 报错 int遇到double 整体转换为double
整数数值范围小于小数数值范围
最大的是字符串:任何类型遇到字符串自动转换为字符串
System.out.println(""+10+1);//101 转为字符串拼接
System.out.println(10+""+1);//101 转为字符串拼接
System.out.println(10+1+"");//11 10+1还未遇到字符串先
char<int
java默认使用的是unicode编码(兼容于ascii)
char ch=‘A’;
char ch = 'A';
System.out.println(ch);//A
System.out.println(ch+0);//65自动转为整数类型
强制转换
范围大的 赋值给 范围小的 必须强制转换
通用写法:
范围小的 = (小类型)范围大
float 特殊:
float f2 = 1234.4f;
int myNnm2 = (int)f2;
练习
已知圆的半径的radious = 1.5 ,求圆的面积
double radious = 1.5; double pai = 3.1415926; double area = pai * radious * radious; System.out.println(area);
apple电脑市场份额20,今年增长了9.8%,求今年的份额;
int fenE = 20; double jinNianFenE = fenE * (1+9.8/100); System.out.println(jinNianFenE);
运算符号
/ 除
%求余数 也是取模
示例
//46天包含几周零几天 int weeks = 46/7; int days = 46%7; System.out.println(weeks+"\t"+days); //商场搞活动100当中120花,420付多少钱? int money = (420/120) * 100 + (420 % 120) ; System.out.println(money);
关系运算符(比较运算符)
> < >= <= == !=(非)
字符串的运算符:
相等 equals() 不等 !equals()
关系运算符的运算结果都是boolean True False
示例
//输入张三成绩,与李四80分,是否比李四大 Scanner input = new Scanner(System.in); System.out.println("请输入张三成绩"); int zsScore = input.nextInt(); System.out.println(zsScore > 80);
表达式:
System.out.println( (34*23 ) > (23*6) );//True
例题
输入三位数,求各个位数之和
Scanner input = new Scanner(System.in);
System.out.println("请输入三位数");
int num = input.nextInt();
int geWei = num / 1 % 10 ;//123 -> 3
int shiWei = num / 10 % 10;//123 -> 12 -> 2
int baiWei = num / 100 % 10;//123->1
System.out.println(geWei+shiWei+baiWei);
两个数交换
位运算(二进制效率最高)
中间变量、加减法、位运算
System.out.println("请输入num1" );
int num1 = input.nextInt();
System.out.println("请输入num2");
int num2 = input.nextInt();
int temp = num1;
num1 = num2;
num2 = temp;
System.out.println(num1);
System.out.println(num2);
细节
%求余:有符号问题,结果永远与被除数一致(正负 (左边那个数))
!:不等于
&& ;|| :且和或 (根据真值表判断,短路特性)
&;| :且和或 (一切都判断)
i++ : 先加后用 (自增+1)
--i :先减后用
byte和short 的特例
byte+byte . short + short ;是int类型
byte = byte + byte ;是错的
byte += byte ;是对
字符串判断相等
str1.equals(str2)
三目运算
x = 布尔判断 ?a : b ;
String result = 10 >2 ? "hello":"world";
System.out.println(result); //hello
为真执行左,为假执行右