Java数据类型和运算符
来源:互联网 发布:sql update 条件 编辑:程序博客网 时间:2024/06/05 01:11
Java开篇
第一章主要简单介绍了一下java的基础知识
介绍
知道java是一种可以跨平台面向对象的程序设计语言
组成
JRE=JVM+类库
JDK=JRE+工具类
Java由四个方面组成:
- java编程语言
- java类文件格式
- java虚拟机(JVM)
- 程序接口(JAVA API)
体系
- JAVASE(java标准版)
- JAVAEE(企业版)
- JAVAME(微型版)
特点
- 一种面向对象的语言
- 一种与平台无关的语言,可以提供程序运行的解析环境
- 一种健壮的语言(主要舍弃了指针,内存的申请以及垃圾回收)
Java虚拟机
- java虚拟机可以理解成为一个以字节码为机器指令的CPU
- 对于不同的平台有不同的虚拟机制
- JVM机制屏蔽底层不同运行平台的差别,实现了”一次编译,随处运行”.
垃圾回收机制
- 在java程序中不使用的内存空间当成垃圾回收
- 在C/C++语言中,垃圾回收是由程序员负责回收无用的内存
- Java程序中消除由程序员回收无用内存的责任.
- Java程序中垃圾回收程序员无法控制与干涉.
Java运行过程
JavaSE整理结构
项目开发命名规范
在eclipse创建java项目需要注意的命名规范
- 项目名首字母大写:StuAO
- 包名的命名规范:com.java(公司名/项目名).bean(包的具体含义),包名的所有构成部分必须要小写
- 类名的命名规范:首字母必须要大写Eg:Student
标识符的命名规范
- 标识符由26个大小写字母,0-9,_和$组成
- 数字不能出现在首位[不能以数字开头]
- 严格区分大小写
- 不能直接使用关键字或者保留字作为标识符
- 标识符中不能包含空格
注意:
在起名字时,为了提高阅读性,要尽量”见名知意”
数据类型
Java是一种强类型语言,对于每一种数据都定义了明确的数据类型,
数据类型分类:
- 基本数据类型
- 整形[byte,short, int, long]
- 浮点型[float, double]
- 字符[char]
- Boolean(默认false)
注意:
整数默认是int类型
浮点数默认是double类型
长整形后缀必须用L或l标记,建议使用L
单精度(float)数必须用F或f标记,建议使用F
- 引用数据类型(类,接口,数组)
数据类型的转换
默认数据类型转换
从小到大的转换
- byte, short, char--->int--->long--->float--->double
- byte,shoort,char相互之间不能转换,他们参与运算首先转换为int类型
强制类型转换
大的数据类型转换为小的数据类型
格式:
目标数据类型 变量 = (目标数据类型) (被转换的数据)
Eg:int intNum = (int)num;
面试题:
byte b1=3,b2=5,b;
b =b1+b2;
b=3+5;
哪句是编译失败的,为什么失败???
答:b=b1+b2这行代码有问题,因为变量相加,会首先看类型,也就是说b=b1+b2的数据类型会提升为int类型,也就是说int类型的(b1+b2)赋值给byte类型的b,,强制类型转换错误,所以有问题.b=3+5.首先把结果计算出来,然后看是否在byte数值范围内,如果在其范围就不报错.
int charA ='0'+1; //ASCII码:'a' 97 'A' 65 '0' 48
System.out.println(charA); // 49
System.out.println(‘a’+1); //98
System.out.println(‘a’+1+”Hello”); // 98Hello
成员变量
成员变量:作为类的成员而存在,直接存在于类中.
- 类变量:又叫静态(static)变量,它可以直接用类名调用,也可以对象调用.
- 实例变量:不用static修饰,它只能通过对象调用[实例化方式调用].
局部变量
局部变量:作为方法或语句块的成员而存在,主要存在于方法参数列表和方法定义中
面试题:
Java中成员变量与局部变量的区别?
- 成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符以及static修饰,但两者都可以定义成final类型.
- 成员变量存储在堆中,局部变量存储在栈中
- 成员变量有默认值(被final修饰并且没有static的必须要显式赋值),局部变量不会自动赋值
块
- 普通代码块
- 构造代码块
- 静态代码块
static{
System.out.println("=====静态代码块=====");
}
{
System.out.println("========构造代码块==========");
}
publicstaticvoid main(String[]args) {
//实例化
StaticDemo demo =new StaticDemo();
System.out.println("=========普通代码块========");
}
静态代码块优先于构造代码块执行
Java运算
算术运算
+, -, *, /, %,
++(前置):先运算后取值
++(后置):先取值后运算
--(前置):先运算后取值
--(后置):先取值后运行
Eg:
System.out.println("相加运算:"+(a+b)); //12
System.out.println("相减运算:"+(a-b)); //4
System.out.println("相乘运算:"+(a*b)); //32
System.out.println("相除运算:"+(a/b)); //2
System.out.println("取模运算:"+(a%b)); //0
/*
* ++(前置):先运算后取值
++(后置):先取值后运算
--(前置):先运算后取值
--(后置):先取值后运行
*/
//c=9 ,a=9
System.out.println("前置++运算:"+(c=++a)+"输出a的值:"+a);
//c=8, a=9
System.out.println("后置++运算:"+(c=a++)+"输出a的值:"+a);
//d=3, b=3
System.out.println("前置--运算:"+(d=--b)+"输出b的值:"+b);
//d=4, b=3
System.out.println("后置++运算:"+(d=b--)+"输出b的值:"+b);
注意:
如果对负数取模”%”,可以把模数负号忽略不记Eg:5%-2=1,但是如果被模数是负数则不可以忽略.
练习题:
从控制台输入一个4位数的整数,实现反转进行输出?
//从控制台输入一个4位数的整数,实现反转进行输出?
System.out.println("请输入一个四位数的整数:");
Scanner scanner =new Scanner(System.in);
intnumSor =scanner.nextInt();//4321 ===>1234
/*
* 分析:
* int g = 12%10 = 2
//取模操作得到个位 ==>两位数得到个位上的数
* intsg = 123%100 = 3
//取模操作得到个位 ==>三位数得到个位上的数
* int s = 12/10=1 //除法操作得到十位
* intss = 123/10%10 //十位
*
*/
intg =numSor%10;
ints =numSor/10%10;
intb =numSor/100%10;
intq =numSor/1000;
System.out.print(g+" "+s+" "+b+" "+q);
System.out.println(g*1000+s*100+b*10+q);
逻辑运算符
&&:短路逻辑与
||:段路逻辑或
!:逻辑非
位运算符
<<:左移
>>:右移
>>>:无符号右移
& :逻辑与
|:逻辑或
^:逻辑异或
~:取反
注意:
位运算符是直接二进制进行运算[只是针对int类型的数据有效]
Integer.toBinaryString(n); //将十进制转换为二进制
Eg:
publicstaticvoid main(String[]args) {
inta = 3;
intb = 2;
//1 ===>3/2=1
System.out.println("右移运算:"+(a>>1));
//12 ===>3*2*2=12
System.out.println("左移运算:"+(a<<b));
//1 ===>3/2=1
System.out.println("无符号右移运算:"+(a>>>1)); System.out.println("与运算:"+(6&3));//2
System.out.println("或运算:"+(6|3));//7
System.out.println("异或运算:"+(6^3));//5
System.out.println("取反运算:"+(~b));//-3
intx=3;
inty=4;
System.out.println("与运算:"+(3&4));//0
System.out.println("或运算:"+(3|4));//7
System.out.println("异或运算:"+(3^4));//7
System.out.println("取反运算:"+(~3));//-4
//3的二进制: 00000011
//左移:[3<<2]===>00001100 //
//右移:[3>>2]===>00000000 00000000 00000000
//右移:[-3>>2]==>11111111 11111111 11111111 -3/2=-1
//无符号位右移[3>>>2]===>0
// 4的二进制: 00000100
//&与运算规则:有0则0
//|或运算符规则:有1则1
//^异或运算规则:相同则0,异同则1
^[异或面试题]:
//^[异或]的特点:
//一个数据位异或两次,该数本身不变
System.out.println(5^6^5); //6
System.out.println(5^6^6); //5
//面试题:实现对两个整数进行交换
intmun1=20;
intmun2 = 30;
//第一种实现思路[开发过程中经常用到]:通过一个中间变量来交换
inttemp=0;
temp =mun1; // ===>20
mun1=mun2; // ===30
mun2=temp; // ===>20
//第二种实现思路[用位异或实现]
mun1 =mun1^mun2;
mun2 =mun1^mun2;//mun1^mum2^mun2 ===>mun1
mun1 =mun1^mun2;//mun1^mun2^mun1 ===>mun2
//第三种
num2=num1+num2;
num1=num2-num1;
num2=num2-num1;
//取反规则:数值(正数,负数)加1取反
//左移规则:m<<n:整数m表示的二进制数左移n位[3<<2],高位移出n为都舍弃,低位补0(此种情况会出现整数变负数)
//左移计算方式:把<<左边的数据乘以2的的移动次幂
System.out.println(3<<2);//==>3*2*2
//右移规则:m>>n:整数m表示的二进制右移n位,m为正数,则高位全部补0,m为负数,则高位全部补1
//右移计算方式:把>>左边的数据除以2的的移动次幂
System.out.println(24>>2);//==>24/2/2=6
System.out.println(24>>>2);//==>24/2/2=6
}
练习题:
System.out.println(8>>1); //4
System.out.println(8<<2); //8*2*2=32
System.out.println(3+5>>1); //4
System.out.println(3+(5>>1));//3+5/2=5
比较运算符
==, !=, <, >, <=, >=
比较运算符返回的是boolean类型的结果
注意:
- <, >,<=, >= 只支持左右两边操作数是数值类型[byte, short, int, long, ffloat, double ]
- ==, !=两边的操作数既可以是数值类型也可以是引用类型
三元运算符
格式:
A(条件表达式)?表达式1:表达式2
运算规则:
- 当A(条件表达式)为true,运算后的结果是:表达式1
- 当A(条件表达式)为false,运算后的结果是:表达式2
System.out.println((8>6)?”8大于6”:”8不大于6”);
阅读全文
0 0
- Java数据类型和运算符
- Java数据类型和运算符
- Java数据类型和运算符
- java数据类型和运算符
- java数据类型和运算符
- Java数据类型和运算符
- java数据类型和运算符
- Java数据类型和运算符:
- 数据类型和运算符 java
- Java数据类型和运算符
- java数据类型和运算符
- Java数据类型和运算符
- java数据类型和运算符
- java数据类型和运算
- Java学习笔记:数据类型和运算符
- Java-----3、数据类型和运算符
- Java的数据类型和运算符
- java 第三天---数据类型和运算符
- C primer plus(编程练习)file-4.8-8
- 功能超强的PDF阅读器下载
- HTML学习笔记--3
- 计算余弦距离
- jquery 动态生成表 绑定click事件,获取同行数据
- Java数据类型和运算符
- HTML Element nodeType 定义
- jdk8,Stream流水线源码解析
- Mycat 源码修改-实现分表规则:按天分表和取摸分表查询
- String常用的方法
- vue.js学习笔记(四)--变化检测问题
- 监听器
- 关于Java,你应该掌握的
- PHP之linux(三) 编辑器(vi/vim) 网络配置