创建一个项目的三个步骤
1.创建一个项目[工程 ] java project
- 创建包package【包名:公司域名的倒置】
- 创建类class
java的数据类型
1.基本数据类型 整数 小数 【浮点数】 布尔值【真或假】 字符
1.1整数的数据类型 int------integer
int num=123;
数据类型 变量名称=456;
int num1=-999;
扩展:
整数的表示在计算机中往往还有其他进制
二进制:0011101 逢二进一 最大的数字是1,只有两个元素 0 1;
在java中使用二进制便是整数 0b 0101000;
int bin=0b001010101;
八进制:逢八进一 有八个元素 01234567 八进制中最大的数字是7
在java中表示八进制:在开头加一个0
int oct=0766,;
十六进制:逢十六进制一 有16个元素,0-9 abcdef
最大的数字是f
java中十六进制的表示 在开头加0x 0xacb1;
int hex=0xab23;
注:在java中 当代码出现红色下划线,表示代码出错,左边会出现带有红叉的小灯
java 中快捷键输出内容 syso sout
System.out.println(dot);
1.2 小数 又称为浮点数 double
double dot=1.23;
double dot1=-2.33;
1.3 布尔值
编程中 真假 男女 是否 对 只有二值的属性,一般采用布尔值表示
性别 默认;女 true女 false 男 保密
布尔的数据类型表示:boolean
boolean gender=true;
System.out.println(gender);输出下
1.4 字符 :char
使用单引号包裹,‘ ’,‘a’,在单引号中 只能包含一个字符;能包含任意字符,能包含汉字,能包含特殊的字符,比如¥ √等。
char ch1=‘a’,不能是char ch2=‘ab’;不能是两个字符
2.基本数据类型占用字节大小和表示范围
整数:有4种表示
byte : 1字节 8位【8bit】 表示的范围:-128~127
0000 0000 2*****2 *****2***** 2 *****2* 2*2 7个2连乘=128,符号位:1表示负数,0表示整数
0001 1100正数 1000 1101 负数
byte b1=25;
byte b2=129;---这个超出了范围,在java中会报错
short:短整型,是相对int来说得,int是4个字节,short占2个字节,long是8个字节
short范围 : -32768~32767===== -2的15次方~2的15次方-1
int[默认]:整型 整数 4字节 范围:-2147483648~2147483647 =====-2的31次方~2的31次方-1,这个数据在10位以内
long: 长整型 范围-263~263-1
long l1=12345678912344565767;这个默认的数据 类型是整型,如果超过10位,需要在数字最后面加个L, 数据在20位以内
浮点数
单精度的浮点数
float 浮动
float f1=1.23 默认1.23是双精度的的,会报错,在最后面加个F,强制单精度 float f1=1.23F;F大小写都可以
double 双精度 double d1=2.333;
单精度与双精度的区别:
精确度不同
float 在内存中只占4个字节,有32位
0000 0000 整数[8位指数] 0000 0000 0000 0000 0000 0000[23表示小数==小数点后6位]
double 占8个字节,有64位,前面的11位表示整数,后面52位表示小数==小数点后15位
布尔
占1个字节 0 假 false 1 真true
字符
占2个字节 0-65535,是从0开始的,只有正没有负数
常量
常量就是不会变化的值,也就是字面上的值
final double pi=3.14;final是最终的,能让数据不被修改,是不变的,不能改的
变量
定义变量
数据类型 变量的名称=值
int age=18;
age=19;
age=20;
字符串
字符串是多个字符 连到一起,成串,使用双引号包裹”写什么都可以“
字符串的数据类型 String S大写
String string=”I Love java,要什么自行车“
注意:字符串的值可以是空的,字符用单引号字符不能是空的
数据类型转换
不同类型之间的数据是可以进行计算的,需要经过类型转换
转换方式:
1.自动类型转换[隐式类型装换]
byte byte1=12;
byte byte2=bytel1+2--这个会报错;//14 2类型是int 自动类型转换:将小类型转大类型(自动转),byte->int
byte byte2=int(12)+int(2)这个是错的
int byte2=int(12)+int(2) 这个是对的
byte byte2=(byte)(byte1+2)这个是对的
注意;基本常用数据类型排序
byte<short=char<int<long<float<double 可以小类型转大类型,才会自动转
补充:上下快速移动整行代码 alt+方向键上/下
2.强制类型转换
数据类型 变量名=(要回的类型)值;
short sh1=1234;
short sum=(short)(sh1+1);
byte by1=(byte)129; 我们byte的范围是-128--127,如果强制转,可能会丢失精度,比如这个例子,输出就是-127
补充:ASCII码表中的字符,对应java中的char类型
System.out.println(0+'a');小写的a在ASCII码表中是97,能通过这种方式,快速转成整型,0是整型
System.out.println(char)(0+'a');这个是强转成字符型
举例:将小写字母转大写字母
算数运算符
int num1=123;
int num2=456;
int sum=num1+num2;
int dis=num1-num2;
int mul=num1*num2;
int div=num1/num2 ; 在java中 整数除以整数,结果为整数,要想得小数,乘以1.0,将其中一个转化为小数,如下:
double div=num1*1.0/num2; 因为1.0是double,会自动类型提升
字符串链接”成都“+”双流“=”成都双流“
- String str1="成都";
- String str2="双流";
- String string=str1+str2;
- System.out.println(string);
++ 自增 每次自动加一
int age=17;
age=age+1;
age=18;
age=age+1;
age=19;
-
age=age+1;
简便写法int age=17;
age++;
age++;
System.out.println(age);
++ 自增 自增分前后
age++; 后自增,规则是先赋值,后自增,
++age; 前自增,规则是先自增,后赋值
不合第二个(其他变量)参与赋值运算,前后自增没有任何区别;
比如:age=20;
int nowAge=age++;
System.out.println(nowAge);-----这个时候结果是20
int nowAge=++age;
System.out.println(nowAge);-----这个时候结果是21
自减 -- 减一
int money=35;
money--;
System.out.println(money);----这时候结果为34
自减也分前后,规则同自增
补充:快速复制一行 ctrl+alt+方向键上下
快速删除一行ctrl+d
将代码还原成标准格式:shift+ctrl+f
赋值运算符
完成的操作是赋值+运算
= 赋值
int age=18;
- += int age =age+5;
age=age+5;===>age += 5;这两个式子是相等的
-= int money=35;money-=8====>money=money-8;
*= int score=30;score*****=2;===>score=score*****2;
/= int num1=10;int num2=3; num1/=num2;====>num1=num1/num2;
%= 取余数 int aa=10;aa%=3;===>aa=aa%3===>结果为1
练习 123456,取出每一位上的数字 java中整数除以整数=整数,所以123456/10=12345
int number=123456;
int ge=number%10;
number /= 10;
int shi=number%10;
number /= 10;
int bai=number %10;
number /= 10;
int qian =number %10;
number /= 10;
int wan =number %10;
number /= 10;
int shiwan =number %10;
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
System.out.println(qian);
System.out.println(wan);
System.out.println(shiwan);
关系运算符
强调:关系运算符运算的结果为布尔值
==判断两个值是否相等,值用于基本数据类型,整数、小数、布尔值、字符,不能用于字符串判断
如:int a=10;
int b=20;
System.out.println(a==b);====>结果为false
!= 不等于
小于 <
大于>
小于等于<=
大于等于>=
逻辑运算符
用来连接两个布尔类型结果的运算符,运算结果都是布尔值 true 或者false
- & 与(一假则假):同时 并且
int score=78;
System.out.println(score>=60 & score<=100);
&链接两个布尔值运算时的规则
真&真=真,真&假=假,假&真=假,假&假=假
总结:两边同时为真,结果才为真,一边为假,结果为假
&&短路与 当逻辑表达式,左边为假的时候,右边不在判断,直接的结果,结果为假,可以提高效率
| 或 (一真则真):或者 有一即可
int handsome =300;
int rich =1000;
System.out.println(handsome>=200 | rich>=1000);===>这里结果是true
|或的运算原则:真|真=真;真|假=真;假|真=真;假|假=假 总结:有一个为真就为真,同时为假才为假。
|| 短路或 用途 当左边成立,为真时,直接得结果,为真,右边不在计算,提高效率。
^ 异或 运算规则 真真=假;真假=真;假真=真;假假=假 总结:一真一假 就为真,同真同假都为假
System.out.println(handsome>=200 ^ rich>=1000);====>这个结果是false
- ! 非 不是 !布尔值 !true=false !false=true 非真即假,非假即真
System.out.println(!(handsome>=500));
|| 短路或
三元运算符
[ternary] 三元的
三元运算符 又叫三目运算符
二元运算符
int a=1;
int b=2;
int sum=a+b;
- 三元运算符格式:数据类型 变量名=布尔值?值1:值2;
布尔值为true,执行值1,布尔值为false,执行值2
int a=1;
int b=2;
int sum=a+b;
int score=70;
String res=score>=85?"奖励":"不奖励";
System.out.println(res);
这里的结果是 不奖励
A?B:C;----->这个有3部分,所以就是三元运算符
注意;前面接收的数据类型要和值得类型对应(一致)
java常用的输出方式
- 方法一 System.out.println() 输出内容并换行 快捷键 syso sout
System 系统 out 输出 println 打印换行,在内容输出后换行
- 方法二 System.out.print()输出内容不换行
如果输出内容想要换行 使用方法一
System.out.println();---不输出内容,只换行,也可以称作手动换行
System.out.print();-------不可以不输出空内容,必须要有参数
- 方法三 System.out.printf(参数1:格式,参数2:数字);--格式化输出
System.out.printf("%.3f",3.2145);表示保留小数点后3位 --"%.3f",会自动四舍五入
上面输出的内容是3.215
从键盘录入数据
- 1.创建一个扫描器
Scanner sc=new Scanner(System.in);//System系统in输入 out 输出
- 2.导包 到扫描器的依赖import java.util.Scanner,eclipse会自动导包
如果没有导包,使用快捷键手动导包,ctrl+shift+o
- 3.通过扫描器对象录入数据
3.1 录入整数 int
System.out.println("请输入一个整数");
int num1=sc.nextInt() //nextInt()下一个整数
System.out.println(num1);
3.2 录入小数 默认类型double
System.out.println("请输入一个小数:");
double d1=sc.nextDouble();
System.out.println(d1);
3.3 输入字符串
方式一
1)必须输入有效数据以后才可以停止,输入的空格和回车不会停止输入
2)在有效数据前的所有空格和回车都会自动的去除
3)在有效数据后的空格会阻断录入,将空格后的有效数据丢弃
4)无法录入空内容
System.out.println("请输入字符串:");
String str=sc.next();
System.out.println(str);
方式二
1)遇到回车就停止录入,输入什么,手机什么,除非遇到换行,停止录入
2)不要和上面的sc.nextInt();sc.nextDouble();sc.next();混用
3)上面三种方式,使用回车结束的时候,会导致nextLine();直接结束,无法录入数据
4)如果非要与上面三种方式混用,在sc.nextLine();上面,再加sc.nextLine();,用来挡掉一次回车
System.out.println("请输入第二个字符串:");
String str2=sc.nextLine();
System.out.println(str2);
- 4.当数据输入录入完毕后,在程序的最后,关闭扫描器
sc.close();