目录
逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较
数据类型
1.IDEA的使用
创建java项目
点击new projept
项目名称不能用中文,路径不能有中文
添加MOdules
选择java
输入Modules name
点击确定,完成项目
完成之后的样子
创建包
作用:类似于文件夹,用于管理字节码(.class)文件。 语法:package 包名; 位置:必须写在源文件的第一行。 带包编译:javac -d . 源文件名称.java (自动生成目录结构) 带包运行:java 包名.类名 (包名+类名又称全限定名) 采用域名倒置的规则:www.baidu.com.cn -> cn.com.baidu.xxx 例如:cn.com.baidu.department1.group2.project3.utility.MyUtils
创建类
2.变量
概念:计算机内存中的一块存储空间,是存储数据的基本单元。 内存就好像是酒店,当中包含了多个房间。 房间的类型有所不同(单人间、两人间...)。 每个房间都有一个唯一的门牌号。 每个房间的住客也不相同。
酒店的房间 — 变量 房间的类型 — 数据类型 房间门牌号 — 变量名 房间的住客 — 值
变量的使用流程:
声明: 数据类型 变量名; int money; //开辟整数变量空间 赋值: 变量名 = 值; money = 100; //将整数值赋予变量 注意:Java是强类型语言,变量的类型必须与数据的类型一致。
声明变量的3种方式:
1.先声明,再赋值:【常用】 数据类型 变量名; 变量名 = 值;
2.声明并赋值:【常用】 数据类型 变量名 = 值;
3.多个同类型变量的声明与赋值:【了解】 数据类型 变量1 , 变量2 , 变量3 = 值3 , 变量4 , 变量5 = 值5;
3.数据类型
Java中的变量具有严格的数据类型区分。(强类型语言) 在Java语言中,任何一个值,都有其对应类型的变量。
基本数据类型有八种,不包含字符串
整数
类型 | 字节 | 取值范围(二进制) | 取值范围(十进制) |
---|---|---|---|
byte | 1字节 | -2^7 ~ 2^7-1 | -128 ~ 127 |
short | 2字节 | -2^15 ~ 2^15-1 | -32768 ~ 32767 |
int | 4字节 | -2^31 ~ 2^31-1 | -2147483648 ~2147483647 |
long | 8字节 | -2^63 ~ 2^63-1 | -9223372036854775808~9223372036854775807 |
//1.先声明后赋值 byte -128~127
byte age;//声明变量,现在没有值
age=18;//赋值
//2.边声明边赋值
short num=32000;
//3.声明多个 常用int
int a=18,b=19,c=20;
int e,f,g;//声明多个
e=18;//赋值
f=19;
g=20;
//声明long类型 需要在数字男后边添加l/L
//当数字没有超过int的大小
long h=333333333333333L;
System.out.println(h);
小数
类型 | 字节 | 负数取值范围 | 正数取值范围 |
---|---|---|---|
float | 4字节 | -3.4E+38 ~ -1.4E-45 | 1.4E-45 ~ 3.4E+38 |
double | 8字节 | -1.7E+308 ~ -4.9E-324 | 4.9E-324 ~ 1.7E+308 |
注意:double为浮点数的默认类型,如需为float类型赋值,需要在值的后面追加“F”
//float赋值时需要加上f/F
float score=99.5f;
double money=9999999.9;
//double类型可以加上d/D 一般情况下都不会去加
double mo=999.9d;
double moo=999.9D;
字符
类型 | 字节 | 取值范围(无符号数) | 字符编码 |
---|---|---|---|
char | 2字节 | 0 ~ 65535 | Unicode字符集(万国码) |
Unicode字符集支持ASCII编码(美国标准信息交换码)。 Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值。
字符赋值:char c1 = 'A';(通过''描述为字符赋值)
整数赋值:char c2 = 65;(通过十进制数65在字符集中对应的字符赋值)
进制赋值:char c3 = '\u0041';(通过十六进制数41在字符集中所对应的字符赋值)
//char类型赋值只能写一个字符而且必须使用单引号
char a='a';
System.out.println(a);
//使用数字赋值
char b=97;
System.out.println(b);
//使用16进制赋值
char c='\u0041';
System.out.println(c);
char d='\"';
System.out.println(d);
布尔类型
类型 | 字节 | 取值范围 | 描述 |
---|---|---|---|
boolean | 1字节 | true / false | 仅可描述“真”或者“假” |
可直接赋值true / false 也可赋值一个结果为true / false的表达式 注意:Java中的boolean不能参与算数运算
boolean flag=false;
boolean flag1=true;
引用数据类型(字符串)
类型 | 取值范围 | 字符编码 |
---|---|---|
String | 任何” ”之间的字面值 | Unicode字符序列 |
System.out.println("你好!");//"你好!"就是字符串
String name="张三";//注意首字母是大写的
String address="河南新乡";
String idCard="41072715646465";//数字类型用双引号括起来也是字符串
System.out.println("姓名:"+name);
System.out.println("户籍:"+address);
System.out.println("身份证:"+idCard);
4.类型转换
自动类型转换:
两种类型相互兼容。 目标类型大于源类型。小转大
byte a=3;
short b=4;
int d=5;
long e=6222222222222222222l;
float f=7.8f;
double h=9.9;
boolean flag=false;
char i=98;
//自动类型转换
//1.类型兼容
// byte,short,int long 互相兼容
short s1=a;//把byte类型的a转换成short类型
long l1=s1;
// float double 互相兼容
double d1=f;//float类型 转换为double类型
//float f1=d1;//大的数据类型无法直接转换为小的数据类型
//byte,short,int,long 可以值接转换为float,double
double d2=d;
float f2=d;
float f3=e;
强制类型转换:
两种类型相互兼容。 目标类型小于源类型。大转小
//1.类型兼容
//2.大的数据类型转换为小的数据类型
int a=1334;
//目标类型 别名=(目标类型)原类型;
byte b=(byte)a;
//前置类型转换有可能会造成数据失真,所以尽量不使用强制转换
System.out.println(b);
//小数类型强制转换为整数,需要去点小数点后边的值
int a2=(int)12.3;
System.out.println(a2);
自动类型转换提升
进行算数运算时: 两个操作数有一个为double,计算结果提升为double。 如果操作数中没有double,有一个为float,计算结果提升为float。 如果操作数中没有float,有一个为long,计算结果提升为long。 如果操作数中没有long,有一个为int,计算结果提升为int。 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
5.表达式
概念:使用运算符连接的变量或字面值,并可以得到一个最终结果。 例如: 1 + 2; int a = 3; a - 2; int b = 10; int c = 20; b * c; c / b; short d = 100; int e = 200; d > e; d <= e; ......
6.运算符
算数运算符:两个操作数进行计算
操作符 | 描述 |
---|---|
+ | 加、求和 |
- | 减、求差 |
* | 乘、求积 |
/ | 除、求商 |
% | 模、求余 |
int a=9;
int b=10;
double c=11.2;
int d=a+b;
System.out.println(a+"+"+b+"="+d);
//两个int相除 结果还是int
System.out.println(a/b);
System.out.println(b/a);
//int和double相除 结果还是double
System.out.println(c/a);
System.out.println(a/c);
//% 取余,取模
int f=b%a;//10/9=1...1 最后的余数就是我们的结果
System.out.println(f);
//四位数 int num=1234;请得到每一位数字
int num=1234;
//int g=num....;
int g=num%10;
int shi=num%100/10;
int bai=num/100%10;
int qian=num/1000;
System.out.println(g+" "+shi+" "+bai+" "+qian);
算数运算符:一元运算符(只有一个操作数)
操作符 | 描述 |
---|---|
++ | 递增,变量值+1 |
- - | 递减,变量值-1 |
int i=9;
int k=i++;//i++ i=i+1; 先赋值后运算 第二次使用时值才会+1
System.out.println(k);
System.out.println(i);
//i=10;
System.out.println(i++ +10+ i++);
//++i 先运算后赋值
i=10;
System.out.println(++i);
i=10;
System.out.println(++i+10+ ++i);//11+10+12
i=10;
System.out.println(i++ + ++i + i++ + ++i);
赋值运算符:等号右边赋值给等号左边
操作符 | 描述 |
---|---|
= | 直接赋值 |
+= | 求和后赋值 |
-= | 求差后赋值 |
*= | 求积后赋值 |
/= | 求商后赋值 |
%= | 求余后赋值 |
int m=10;
m+=3;//m=m+3;
System.out.println(m);
关系运算符:两个操作数进行比较
操作符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
int j=10;
int n=11;
//比较运算符得到的结果是boolean类型true或者false
System.out.println(j>n);
System.out.println(j<n);
//==只能比较基本数据类型,引用类型的比较不建议使用
System.out.println(j==n);
System.out.println(j!=n);
逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较
操作符 | 语义 | 描述 |
---|---|---|
&& | 与(并且) | 两个操作数,同时为真,结果为真 |
|| | 或(或者) | 两个操作数,有一个为真,结果为真 |
! | 非(取反) | 意为“不是”,真即是假,假即是真 |
Scanner sc=new Scanner(System.in);
System.out.println("请输入语文成绩:");
double cScore=sc.nextDouble();
System.out.println("请输入数学成绩:");
double mScore=sc.nextDouble();
//如果成绩都大于60 良 && 两个表达式都是true才能为true
boolean flag1= cScore>60&&mScore>60;
System.out.println("都及格了?"+flag1);
// ||有一个表达式为true结果为true
boolean flag2= cScore>60||mScore>60;
System.out.println("至少一个及格了?"+flag2);
// ! 非
boolean flag3= !(cScore>60||mScore>60);
System.out.println("一个都不及格?"+flag3);
三元运算符:将判断后的结果赋值给变量
操作符 | 语义 | 描述 |
---|---|---|
? : | 布尔表达式?结果1:结果2 | 当表达式结果为真,获得结果1当表达式结果为假,获得结果2 |
Scanner sc=new Scanner(System.in);
System.out.println("请输入成绩:");
double score=sc.nextDouble();
//如果成绩大于60显示及格了,否则显示不及格
String str=score>=60? "及格":"不及格";
//boolean表达式? 结果A:结果B
//当前边的表达式成立 显示结果A 不成立显示结果B
System.out.println("成绩及格了么?"+str);
7.控制台输入
程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。 导包语法:import 包名.类名;//将外部class文件功能引入到自身文件中。 使用顺序: 导入 java.util.Scanner。 声明 Scanner 类型的变量。 使用Scanner类中对应的函数(区分类型): .nextInt(); //获得整数 .nextDouble(); //获得小数 .next(); //获得字符串 .next().charAt(0);//获得单个字符 注:如果输入了不匹配的数据,则会产生java.util.InputMismatchException
//创建对象
Scanner sc=new Scanner(System.in);//固定写法
System.out.println("请输入一个数字:");
//接收数据 (控制台输入数据)
double d1= sc.nextDouble();
//int i=sc.nextInt();
//String str=sc.next();//接收字符串
System.out.println(d1);