Java基础学习(三)
- /*
- java中的八种基本数据类型:
- 整数:
- byte 、 short 、 int 、 long
- 小数:
- float double
- 字符:
- char
- 布尔:
- boolean
- 字符串的类型: String(引用数据类型)
- 声明变量的方式:
- 方式1: 数据类型 变量名 = 数据;
- 方式2:数据类型 变量名1 , 变量名2 ......;
- */
- class Demo1 {
- public static void main(String[] args) {
- String str = ""; //字符串还是字符呢? ""字符串没有内容是属于一个空字符串。
- System.out.println(str);
- }
- }
- /*
- 数据类型转换:
- 小数据类型-------->大数据类型 自动类型转换
- 大数据类型--------->小数据类型 强制类型转换
- 强制类型转换的格式:
- 小数据类型 变量名 = (小数据类型)大数据类型
- 数据类型转换要注意的细节:
- 1. 凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。
- 2. 两个不同数据类型的数据在运算的时候,结果取决于大的数据类型。
- */
- class Demo2
- {
- public static void main(String[] args)
- {
- /*
- byte b= 11; // 一个字节 一两碗
- short s = b; // 把b变量存储的值赋予给s变量。 2字节 二两的碗
- int i = s; // i是4字节
- long l = i; // l 是8个字节。
- System.out.println(l);
- int i = 128; //4个字节
- byte b =(byte) i; // 1个字节
- System.out.println(b); // -128
- //如果是负数,那么最高位肯定是1, 正数的二进制位的最高位是0。
- System.out.println(Integer.toBinaryString(-7)); //sun给我们提供一个功能 Integer.tobinaryString() 查看一个数据的二进制数据形式的。
- // 11111001(补码)
- 凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。
- byte b1 =1;
- byte b2 = 2;
- byte b3 = (byte)(b1+b2);
- System.out.println(b3); //3
- System.out.println('a'+1); //98
- 两个不同数据类型的数据在运算的时候,结果取决于大的数据类型
- int i =10;
- long l = 20;
- i = (int)(i+l);
- System.out.println(i);
- */
- int i = 10; //
- byte b = i; // 一个整数没有加上任何标识的时候,默认是int类型的数据。
- //10 是一个常量, 编译器在编译的时候就能够确认常量的值了,byte b = 10,在编译到的时候
- //java编译器就会检查到10并没有超出byte的表示范围,所以允许赋值。
- //java编译器在编译 的时候并不能确认变量所存储的值,变量存储的值是在运行的时候才在内存中分配空间 的。
- System.out.println(b);
- }
- }
- /*
- 算术运算符:
- + (正数、加法、连接符)
- 连接符的作用: 让任何的数据都可以与字符串进行拼接。
- 如果+号用于字符串的时候,那么+号就是一个连接符,并不是 做加法功能了。
- 连接符要注意:任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据。
- -
- *
- / (除法)
- %(取模、取余数)
- */
- class Demo3 {
- public static void main(String[] args){
- /*
- int i1 = 1; //
- int i2 = 2;
- //System.out.println(i1 +" world"); // "hello wolrd" , 1 world
- // 计算机每次运算的时候只能取两个数据运算。
- System.out.println(1+2+3 +" world"+1+2+3); // 123world123 33world15
- 1+2+3 +" world"+1+2+3
- 3+3 +" world"+1+2+3
- 6+" world"+1+2+3
- "6world"+1+2+3
- double a= 12.0;
- int b = 3;
- System.out.println(a/b); //3 4.0
- 在java中做取模 运算的时,结果的正负号是取决于被除数。
- */
- System.out.println("结果:"+(10%3));
- System.out.println("结果:"+(10%-3)); // 1 1
- System.out.println("结果:"+(-10%3)); // -1 -1
- System.out.println("结果:"+(-10%-3)); // -1 -1
- }
- }
- /*
- ++ (自增) : 自增就是相当于操作数+1.
- 前自增:++位于操作数的前面。 比如: ++a;
- 前自增:先自增,后使用。
- 后自增: 先使用,后自增。
- */
- class Demo4
- {
- public static void main(String[] args)
- {
- /*
- int a = 0;
- //int sum = ++a; //前自增。 a = a+1 , sum = a
- int sum = a++; //后自增 sum = 0 , a = a+1
- System.out.println("sum= "+ sum+ " a = "+ a); //1
- 后自增在jvm的运行原理:
- 因为后自增要使用 到没有+1之前的值,那么jvm会先声明一个变量用于保存没有+1之前的值。
- 原理:
- 1. int temp = i; // 声明了一个临时变量用于记录了i没有加1之前的值。
- 2. 自增。 i = i+1;
- 3. temp把用作了表达式 的结果。
- */
- int i = 0;
- i = i++; // 后自增... 后自增要使用到没有+1之前的值。
- System.out.println("sum ="+ sum+ "i= "+i);
- }
- }
- /*
- 自减: 操作数-1.
- 前自减: --位于操作数的前面。 --操作数
- 前自减: 先自减,后使用。
- ----------------------------------------------
- 后自减:--位于操作数的后面。 操作数--;
- 后自减: 先使用,后自减。
- */
- class Demo5
- {
- public static void main(String[] args)
- {
- /*
- int i = 1;
- int sum = --i; //前自减 i = i-1 , sum = i;
- int sum = i--; // 后自减 sum = i ; i = i-1;
- System.out.println("sum = "+ sum); // 0 1
- */
- int num = 10;
- //int sum = 10* num++; //后自增
- int sum = 10* ++num; //前自增
- System.out.println("sum = "+ sum);
- }
- }
- /*
- 赋值运算符:
- = (赋值运算符)
- +=
- -=
- *=
- /=
- %=
- */
- class Demo6
- {
- public static void main(String[] args)
- {
- int i = 10; // 把10赋予给i变量。
- i+=2; // i = i+2;
- System.out.println("i = "+i);
- byte b1 = 1;
- byte b2 = 2;
- //b2 = (byte)(b2+b1); //报错。, 需要强制类型转换
- b2+=b1; //b2 = b2+ b1; b2+=b1 在编译的时候,java编译器会进行强制类型转换,不需要我们手动转换了。
- System.out.println("b2 : "+ b2);
- }
- }
- /*
- 比较运算符: 比较运算符的结果都是返回一个布尔值的。
- == (判断是否等于)
- ==用于比较两个基本数据类型数据的时候,比较的是两个变量所存储的值是否一致.
- ==用于比较两个引用类型变量的数据时候,比较的是两个引用类型变量所记录的内存地址是否一致.
- != (不等于)
- > (大于)
- < (小于)
- >= (大于等于)
- <= (小于等于)
- */
- class Demo7
- {
- public static void main(String[] args)
- {
- /*
- int a = 10;
- int b =10;
- System.out.println("10等于10吗?"+ (a==b));
- System.out.println("10不等于1吗?"+ (10!=1) ); //true
- */
- byte b = 10;
- long l = 30;
- System.out.println(l>b); //两个不同类型的数据是否可以比较呢.,可以的,但是两个不同类型的数据必须是兼用的数据。
- //这个比较的过程会先把b转换了long类型的数据,然后再进行比较 。
- System.out.println('a'>50);
- }
- }
- /*
- 逻辑运算符 :逻辑运算符的作用是用于连接布尔表达式的。
- & (与,并且)
- 规律: 只有左右变量同时 为true,那么结果才是true,否则就为false。
- | (或,或者)
- 规律: 只要两边的布尔表达式有一边为true,那么结果就为true,只有两边同时为false 的时候,结果才是false.
- ^ (异或)
- 规律: 只要两边的布尔表达式 结果不一致,那么结果就为true,如果左右两边 的布尔表达式一致,那么就为false.
- ! (非)
- --------------------
- && (短路与\双与)
- 短路与和单与符号的相同与不同点:
- 相同点: 短路与和单与运算 的结果是一样的。
- 不同点: 使用短路与的时候,如果左边的布尔表达式为false,则不会在运算右边的布尔表达式,从而提高了
- 效率。使用单与的时候,即使发现左边的布尔表达式为false,还是会运算右边的布尔表达式的。
- 只有左边的布尔表达式为false时,双与的效率才要高于单与的.
- || (短路或\双或)
- 短路或与单或的相同点与不同点:
- 相同点:运算的结果是一致的。
- 不同点:使用短路或的时候,当发现左边的布尔表达式为true时,则不会运算右边的布尔表达式。
- 使用单或的时候 发现左边的布尔表达式为true,还是会运算右边布尔表达式。
- 需求:要求两年或两年以上的工作经验,年龄大于18岁。
- */
- class Demo8
- {
- public static void main(String[] args)
- {
- /*
- int workAge = 2;
- int age = 24;
- System.out.println(workAge>=2|age++>18);
- System.out.println("age:"+ age);
- System.out.println(true&true); //true
- System.out.println(true&false); // false
- System.out.println(false&true); // false
- System.out.println(false&false); // false
- System.out.println(true|true); // true
- System.out.println(true|false); // true
- System.out.println(false|true); // true
- System.out.println(false|false); // false
- System.out.println(true^true); // false
- System.out.println(true^false); // true
- System.out.println(false^true); // true
- System.out.println(false^false); // false
- System.out.println(!true); //
- System.out.println(true&&true); //true
- System.out.println(true&&false); // false
- System.out.println(false&&true); // false
- System.out.println(false&&false); // false
- */
- System.out.println(true||true); // true
- System.out.println(true||false); // true
- System.out.println(false||true); // true
- System.out.println(false||false); // false
- }
- }
- /*
- 位运算符:位运算符就是直接操作二进制位的。
- & (与)
- | (或)
- ^ (异或)
- 规律: 如果操作数A连续异或同一个操作数两次,那么结果还是操作数A。
- 应用: 对数据加密.
- ~ (取反)
- */
- class Demo9{
- public static void main(String[] args){
- System.out.println(6&3); // 2
- System.out.println(6|3);
- System.out.println(6^3);
- System.out.println(~7); // -8
- }
- }
- /*
- 位运算符可能会出现的笔试题目:
- 1. 交换两个变量的值,不准出现第三方变量。
- 2. 取出一个二进制数据的指定位数。要求读取该二进制数据的低4位
- 00000000-00000000-00010100-01001101
- & 00000000-00000000-00000000-00001111
- ------------------------------------------
- 00000000-00000000-00000000-00001101
- */
- class Demo10 {
- public static void main(String[] args)
- {
- int a = 3;
- int b = 5;
- /*
- 第一种方式: 定义第三方变量。
- int temp = a; //3
- a = b; //a = 5
- b = temp;
- 方式2:相加法, 缺点: 两个int类型的数据相加,有可能会出现超出int的表示范围。
- a = a+b; // a =8
- b = a-b; //b = 8 - 5 = 3
- a = a-b; // a = 8 - 3 = 5
- 方式3: 可以使用异或。 缺点: 逻辑不清晰。
- */
- a = a^b; // a = 3^5
- b = a^b; // b = (3^5)^5 = 3
- a = a^b; // a = (5^3)^3 = 5
- System.out.println("a = "+ a+" b="+b);
- }
- }
- /*
- 移位运算符:
- <<(左移)
- 规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移的位数.
- 3<<1 = 3 *2(1) = 6;
- 3<<2 = 3*2(2) = 12
- 3<<3 = 3*2(3) = 24
- >>(右移)
- 规律:一个操作数在做右移运算的时候,实际上就是等于该操作数除以2的n次方,n就是右移的位数。
- 3>>1 = 3 / 2(1) = 1
- 3>>2 = 3 / 2(2) = 0 。。
- >>>(无符号右移) :
- 无符号右移与右移的区别:进行右移运算的时候,如果操作数是一个正数,那么左边的空缺位使用0补,
- 如果操作数是一个负数,那么左边的空缺位使用1补。而使用无符号右移的时候,不管是正数还是负数都
- 统一使用0补。
- 笔试题目:使用最高的效率算出2乘以8的结果。
- 2<<3 = 2*2(3) = 16;
- */
- class Demo11 {
- public static void main(String[] args){
- /*
- 左移
- System.out.println(3<<1); // 6
- System.out.println(3<<2); // 12
- System.out.println(3<<3); // 24
- 右移:
- */
- System.out.println(3>>>1); // 1
- System.out.println(3>>>2); //0
- }
- }
- /*
- 三元运算符(三目运算符)
- 格式;
- 布尔表达式?值1:值2 ;
- 三元运算符要注意的细节:
- 使用三元运算符的时候,一定要使用该表达式返回的结果,或者是定义一个变量接收该表达式返回的结果。
- */
- class Demo12
- {
- public static void main(String[] args) {
- /*
- int age = 26;
- String result = age>=18?"成年人":"未成年人";
- System.out.println(result);
- */
- int a = 1;
- int b = 2;
- int c = 3;
- int result = a*b+c/2+2*(a+b)/c;
- System.out.println("result="+result);
- /*
- a*b+c/2+2*(a+b)/c;
- a*b+c/2+2*3/c
- 2+c/2+2*3/c
- 2+1+2*3/c
- 2+1+2 = 5
- */
- }
- }
流程控制语句
- /*
- 控制流程语句:
- 语句: 使用分号分隔的代码就是一个语句。
- 顺序语句: 按照代码顺序从上往下执行所有的代码就是顺序语句,,
- */
- class Demo1 {
- public static void main(String[] args)
- {
- /*
- int i = 10; //声明变量的语句
- ;//空语句
- System.out.println("Hello World!"); //输出语句
- */
- System.out.println("A");
- System.out.println("B");
- System.out.println("C");
- System.out.println("D");
- }
- }
- /*
- 控制流程语句之(if)判断语句
- if判断语句的格式:
- 格式1:适用于一种情况使用。
- if(判断的条件){
- 符合条件执行的代码;
- }
- 格式2 : 适用于两种情况下去使用的。
- if(判断条件){
- 符合条件执行的代码
- }else{
- 不符合条件执行的代码;
- }
- 三元运算符的格式:布尔表达式?值1:值2;
- if-else 与三元运算符非常像:
- 三元运算符的优点: 结构比较简洁。
- 三元运算符的缺点: 符合条件必须要返回一个结果,不能执行语句。
- 格式三: 适用于多种情况下去使用的。
- if(判断条件1){
- 符合条件1执行的代码
- }else if(判断条件2){
- 符合条件2执行的代码
- }else if(判断条件3){
- 符合条件3执行的代码
- }......else{
- 都不符合上述 的条件执行的代码
- }
- if语句要注意的细节:
- 1. 如果符合条件后只有一个语句需要执行,那么可以省略大括号。但是建议不要省略,因为结构不清晰。
- 2. if语句的判断条件后不能添加分号,否则会影响到执行的效果的,
- 需求1:工作经验要两年或者两年以上。
- 需求2:根据一个变量所记录的数字输出对应的星期。 0 ---星期天 1 星期一
- */
- class Demo2
- {
- public static void main(String[] args)
- {
- int workAge = 2;
- /*
- 格式1:
- if(workAge>=2){
- System.out.println("电话通知过来面试..");
- }
- 格式2:
- if(workAge>=2){
- //符合条件执行的代码
- System.out.println("电话通知你面试");
- }else{
- //如果不符合上述的条件执行的代码
- System.out.println("电话通知不要再投简历了,不收你!!");
- }
- */
- int num = 31;
- if(num==0){
- System.out.println("星期天");
- }else if(num==1){
- System.out.println("星期一");
- }else if(num==2){
- System.out.println("星期二");
- }else if(num==3){
- System.out.println("星期三");
- }else if(num==4){
- System.out.println("星期四");
- }else if(num==5){
- System.out.println("星期五");
- }else if(num==6){
- System.out.println("星期六");
- }else{
- System.out.println("没有对应的星期");
- }
- }
- }
- /*
- 需求: 键盘录入一个分数,根据分数输出对应的等级。
- 比如: 100-90 A等级 89-80 B等级 ..... E等级
- 接受键盘录入数据的步骤:
- 1. 创建一个扫描器对象。
- 2. 调用扫描器对象的nextInt方法扫描数据。
- 3. 导入包。
- */
- import java.util.*;
- class Demo3
- {
- public static void main(String[] args)
- {
- //创建一个扫描器
- Scanner scanner = new Scanner(System.in);
- //调用扫描器扫描键盘录入的数据
- System.out.println("请输入一个分数:");
- int score = scanner.nextInt(); //定义了一个num变量接收扫描到内容。
- if(score>=90&&score<=100){
- System.out.println("A等级");
- }else if(score>=80&&score<=89){
- System.out.println("B等级");
- }else if(score>=70&&score<=79){
- System.out.println("C等级");
- }else if(score>=60&&score<=69){
- System.out.println("D等级");
- }else if(score>=0&&score<=59){
- System.out.println("E等级");
- }else{
- System.out.println("补考..");
- }
- }
- }
Java基础学习(三)的更多相关文章
- Java基础学习(三)—面向对象(上)
一.理解面向对象 面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- java基础学习总结——java环境变量配置(转)
只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- [转帖]java基础学习总结——多态(动态绑定)
https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态
- Java基础学习(3)
Java基础学习(三) Java异常 Throwable类:所有异常的祖先类 Error:虚拟机异常.内存错误.没法处理 Exception:编码.环境.用户操作输入出现问题 非检查异常(自动捕获): ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础:三步学会Java Socket编程
Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛 第一步 ...
随机推荐
- 用Canvas实现动画效果
1.清除Canvas的内容 clearRect(x,y,width,height)函数用于清除图像中指定矩形区域的内容 <!doctype html> <html> <h ...
- mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法【mysql低版本数据导入到高版本出错的解决方法】
mysql5.x升级至mysql5.7后导入之前数据库date出错,这是由于MySQL的sql_mode的影响,解决方法如下所示: [具体参考:mysql的sql_mode详解]修改mysql5.7的 ...
- SQL Server启动的几种方法
SQL Server 启动有以下几种方法: (1)在Control Panel——Administrative Tools——Services,找到SQL Server (XXX)进行启动. 其中XX ...
- 在本地调试移动设备上的页面——神器weinre介绍
平时写代码,最喜欢用chrome的developer Tool调试页面了,基本是离不了的工具.但是当页面需要在移动设备上使用,尤其是被嵌入到Hybird APP中时,由于移动版的chrome没有dev ...
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...
- Swift3.0P1 语法指南——构造器
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- 内核编译报错Fedora20(友善)
首先说明我的宿主机环境:Fedora20 64位,开发板是友善Smart210(S5PV210——Cotex-A8)!!!马上入题! 按照开发板的用户手册来编译内核,一直报这个错误:/opt/Frie ...
- SQL Server 积累
2016-11-24 sql语句修改某表某字段的数据类型和字段长度: 问题是在修改老功能中暴露出来的,我修改了图片上传功能,结果报图片路径超出数据库字段规定长度,我检查数据库后发现之前设计数据库的人将 ...
- POJ1753(位操作和枚举)
题目:http://poj.org/problem?id=1753 题意:一块4*4的棋盘,黑白块不规律分布,翻动一个色块,其上下左右,都会被翻动,知道全黑全白为止.输出最小次数,达不到则输出“Imp ...
- Burp Suite 使用教程(上传突破利器)
Burp Suite是一个免费的网站攻击工具. 它包括proxy.spider.intruder.repeater四项功能.该程序使用Java写成,需要 JRE 1.4 以上版本 下载该程序的源代码, ...