学习笔记Day1:数据类型和运算符

1.搭建JAVA环境

1.1java开发流程相关介绍

1.1.1 版本的选择:1.7/1.8(软件开发,并非越新越好,越稳定越好)
1.1.2 JDK的安装:选择相应的系统类型32/64,是那一个操作系统的
  • JDK的安装
  • JRE的安装
  • 注意:路径当中,不要有中文和特殊符号,傻瓜式安装(默认选择)
  • 检验是否安装成功:命令行模式下 java -version 能显示版本信息
1.1.3配置环境变量
  • JAVA_HOME 你的JDK安装路径
  • CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 编译器编译的路径
  • PATH %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; exe程序执行的路径
1.1.4开发Java程序流程
  1. 编写源码:xxx.java
  2. 编译:xxx.class 命令行模式下 javac xxx.class
  3. 运行 命令行模式下 java xxx
1.1.5Java虚拟机与跨平台原理

jvm实现跨平台,《深入理解java虚拟机》神作推荐

1.1.6集成开发环境(IDE)

将程序开发环境和程序调试环境集合在一起,方便程序员开发软件

使用Eclipse开发Java程序步骤

  1. 创建一个Java项目
  2. 手动创建Java源程序
  3. 编译Java源程序
  4. 运行Java程序
1.1.7Java项目组织结构
  • 包资源管理器:用包组织Java源文件,类似于文件夹,选择菜单“Window→Show View→Package Explorer”打开
  • 导航器:类似于Windows中的资源管理器,选择菜单“Window → Show View → Navigator”
1.1.8Java程序的结构
public class HelloWorld  {
       public static void main(String[ ] args)  {
             System.out.println("Hello  World!!!");
      }
}
  • 类名与文件名完全一样,首字母大写
  • 程序入口:main方法不能错
  • System.out.println()从控制台输出信息,S大写
  • { 和 } 一一对应,缺一不可
  • 转义符 \n 将光标移动到下一行的第一格
  • 转义\t 将光标移到下一个水平制表位置
1.1.9Java程序的注释

单行注释以 “//” 开始
多行注释以“/”开头,以“/”结尾
JavaDoc注释以“/**”开头,以“*/”结尾

1.1.10Java编码规范
  • 一行写一句
  • 注意缩进
  • 注意大小写
  • 所有符号都是英文状态下的半角
  • 《阿里巴巴开发手册》可以参照

2.数据类型

2.1变量

2.1.1 变量的定义和作用

变量:一个数据存储空间的表示

2.1.2 变量命名规则

Java语言中,变量命名要符合一定规则

  • 字、下、美、人、数、骆驼
  • 有意义
  • 不能使用关键字,如public、class
  • 变量名首字母小写
  • 同一个代码块当中:变量名不可以重复声明
2.1.3Java常用数据类型

8种基本数据类型:

数据类型大小取值范围
byte1字节8位-128 ~ +127
int4字节32位-2147483648(-2^31)~ + 2147483647(2^31-1)
short2字节16位-32768 -2^15 ~ + 32767 +2^15-1
long8字节64位-2^63 ~ + 2^63-1
float4字节32位浮点数1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38
double8字节64位浮点数4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308

在java中,整型默认是int类型,浮点型默认是double类型

2.1.4变量声明及使用

第一步:声明变量,根据数据类型在内存申请空间

数据类型 变量名;int money;

第二步:赋值,即“将数据存储至对应的内存空间”

变量名 = 数值;money = 1000 ;

第一步和第二步可以合并

数据类型 变量名=数值; int money = 1000;

第三步:使用变量,即“取出数据使用”

2.2常量:在声明前加final

2.2.1命名规则

推荐做法:
(1)常量名通常大写
(2)不同字符使用下划线分隔
(3)只能被赋值一次,通常定义时即对其初始化

2.2.2赋值

再想赋值就不可以了,只能赋值一次

2.3类型转换

2.3.1自动类型转换规则

规则1:如果一个操作数为double型,则整个表达式可提升为double型

规则2:满足自动类型转换的条件
两种类型要兼容:
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型

2.3.2强制类型转换

语法:(类型名)表达式

2.3.3转换规律

(1) 短的可以直接放到长的里面

(2) 长的不可以直接放到短的里,需要强制转换

(3) 低精度可以直接转为高精度

(4) 高精度不可以直接转为低精度,需要强制转换。

2.3.4示例
//短--->长 
byte b1 = 1;//0000 0001
short s1 = b1;// 0000 0000 0000 0001
int i1 = s1;
long l1 = i1;
//高精度
float f1 = l1;
double d1 = f1;
int s2 = 125;
byte b2 = (byte)s2;//强制转换:丢失高位
System.out.println(b2);
	
//浮点型强转:是丢失精度,但是注意不是四舍五入
double d = 3.1415926;
float f = (float)d;
System.out.println(f);
int i3 = (int)f;
System.out.println(i3);

3.运算符

3.1赋值运算符

3.1.1语法

(1) 优先级最低

3.1.2应用

如何借助变量以及赋值运算符实现两个数据的交换?

int num1=8;
int num2=9;
int temp;
temp = num1;
num1 = num2;
num2 = temp1;

3.2算术运算符

3.2.1基本的算术运算

+、-、*、/、%、++、–

(1) 取整:当除数和被除数都是整数时,结果一定是忽略了精度的整型,当除数和被除数有浮点数时,结果有浮点数,当除数或者被除数有常量,结果有浮点数

int i = 11;
int j = 12;
System.out.println("i + j = " + (i + j));//23
System.out.println("i - j = " + (i - j));//-1
System.out.println("i * j = " + (i * j));//132
System.out.println("i / j = " + (i / j));//0 --- 取整
//有浮点数结果
double k = 12.0;
System.out.println("i / k = " + (i / k));//0.9166666666666666 --- 取浮点数值
//除数或者被除数有常量
System.out.println("11 / 12 = " + (11 / 12d));//0.9166666666666666 --- 取浮点数值

(2)取余:

System.out.println("j % i = " + (j % i));//除不净的 --- 取余
System.out.println("8 奇偶 : " + (8 % 2));//取余应用举例

(3)除数不可为0,否则报错

(4) 自增自减的运用

自增 ++ : 在原有变量的基础上,加1
自减 – : 在原有变量的基础上,减1

参与运算时,需注意位置
写在后面,是先将变量参与运算,然后再自增

int i = 1;
System.out.println(i);//i 1
System.out.println((i++) +1);//i 1 + 1 = 2
System.out.println(i);//i 2
System.out.println((++i) +1);//i 2+1 + 1 = 4

写在前面,是先自增 , 然后参与运算

int i = 1;
System.out.println(i);//1
System.out.println(++i + 1);//i 1+1 + 1 = 3
System.out.println(i);//2

笔试题

int i = 1;
i = i++;//结果是多少,为什么。赋值完成后,会回收寄存器里的数据
System.out.println(i); //1
3.2.2复合赋值运算符

+=、-=、*=、/=、%=

int i = 10;
i += 10;//i = i + 10;
i *= 10;//i = i * 10;

3.3关系运算符

3.3.1语法

(1) 判断两端必须是基本数据类型

  • == 和 != 可以用于判断字符和布尔类型,以及数值(可以用于判断引用数据类型的地址是否相等)

  • 不等式判断 :只可以用于判断数值

  • 处理优先级的时候,如果逻辑不清,可以无脑使用括号,提高可读性

int i = 11;
int j = 12;
System.out.println(i == j);
System.out.println(i > j);
System.out.println(i < j);
System.out.println(++i == j);//true
System.out.println(i);//12
System.out.println(j);//12
3.3.2注意

=为赋值运算符,==为等于运算符

优先级>、<、>=、<= 运算符的优先级别高于==、!=;>、<、>=、<=运算符只支持数值类型的数据比较

3.4逻辑运算符

3.4.1运算规则

判断的是布尔类型,结果也是布尔类型

短路:当左面就已经能得到结果了,则右面不再执行(常用)

长路:无论左面是否有结果,右面一定会执行(基本不用)

优先级别 ! > && > || (not and or)

运算符含义运算规则
&&短路****与两个操作数都是true,结果才是****true
||短路****或两个操作数一个是true,结果就是****true
!操作数为true,结果为****false
操作数为false,结果为****true
3.4.2示例
//与:两边都为true,结果为true;有任意为false,结果为false;
int i = 1;
int j = 2;
//System.out.println(i++ == j && ++i < j);//false:短路
//System.out.println(i);//2
//System.out.println(j);//2
System.out.println(i++ == j & ++i < j);//false:长路
System.out.println(i);//3
System.out.println(j);//2
//或:两边都为false,结果为false;有任意为true,结果为true
System.out.println(i == j || i > j); //false
System.out.println(i == j | i > j); //false
//非
boolean f = true;
System.out.println(!f);
f = false;
System.out.println(!f);

3.5条件运算符:三目运算符

3.5.1语法

条件是布尔类型,结果类型要统一

3.5.2示例
//条件运算符  (结果为布尔类型的条件表达式)? (当结果为true时的返回值):(当结果为false时的返回值) 
//两个结果,只能是单行表达式,不可以是代码块
//交互
Scanner s = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = s.next();
//字符串不可以用 == 判断是否相等
//字符串判断,需要把字符常量写在前面 , 否则,如果变量为Null会报空指针异常
boolean f = "十三".equals(name) ;
String result = f ? "是大帅哥" : "是超级大帅哥";
System.out.println(result);

3.6位运算符

3.6.1示例
//补充:位运算符 >> << 
//10的2进制是多少?
//右位移1位,相当于除以 2
System.out.println(10 >> 1);//1010  ---> 00101
System.out.println(10 >> 2);//10/2/2 (取整)
//左位移1位,相当于乘以2
System.out.println(10 << 1);//1010  ---> 10100
System.out.println(10 << 2);//10*2*2

3.7运算符的优先级

单目运算符包括! ~ ++ --,优先级别高
优先级别最低的是赋值运算符
可以通过()控制表达式的运算顺序,()优先级最高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
算术运算符 > 关系运算符 > 逻辑运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值