Java基础(移位,函数)

回顾:
Java :虚拟机  sandbox
jre  :jvm +核心类库
jdk     :jre + 工具 ,javac  java

设置变量: java_home
path=搜索顺序。例如(notepad calc mapaint binary)

classpath=java搜索类的顺序。
Java -classpa 目录(d:\java;d:\;.)

关键字
------------
    被Java语言赋予特殊含义的单词。(所有字母为小写)
    如:class interface byte return.....

byte     //字节
    short     //短整型    2 bytes
    int     //整型        4 bytes
    long    //长整型    8 bytes
    float     //浮点型
    double     //双精度浮点型
    [访问权控制]
    private      //私有的
    protected    //受保护的
    public        //公共的

{class function modifier}尝试
    abstract         //抽象
    final            //最终的
    static            //静态的    
    synchronized    //同步
    extends         //扩展(应用于class中)
    implements        //实现(实现于class中)
    new                //创建
    this            //当前
    super            //超类,父类
    instanceof        //是否是xxx实例(对象)
    try                //尝试
    catch            //捕获
    finally            //最终
    throw            //抛出
    throws            //定义类声明时,抛出异常。
    package            //包
    import            //导入  <--> export
    native            //本地的
    transient        //暂时的,瞬时,临时  <--> persistent
    assert            //断言

标识符(名称)
----------------
    英文字母
    数字
    _   $

严格区分大小写

命名格式:

包名: aaa.bbb.ccc.ddd(文件层级关系)
    类名和借口名  :首字母大写(驼峰命名法)XxxYyyZzz
    变量和函数 :convertStr2Int(第一个单词首字母小写,以后的单词首字母大写)
    常量:  final String BRAND ="benz"    XXX_YYY_ZZZ(全部大写)
    注释: 单行  //        (sql 注释 --)
           多行  /* */
           文档注释(javadoc 提取所有文档注释)
           /**
           *
           */

常量:Java中的常量的分类
        1.所有整数
            byte short int long  默认是int
        2.所有小数
            float  double    默认 double
        3.布尔(boolean)型常量,
        4.字符常量   ( ‘‘)
            char
        5.字符串常量 ( "")
        6.null 常量:只有一个数值 : null

整数的四种表现形式:
            二进制: 0 1  满2进1
            八进制: 0-7  满8进1  用0开头(一般不用,表示方法容易混淆)
            十进制: 0-9  满10进1.
            十六进制:0-9,a-f  满16进1 用0X开头表示

2^10=1024(byte)=1K
        2^20=1024k=1M
        2^30=1024M=1G
        2^40=1024G=1T

负数采用补码方式存储:正数取反+1;
        原理:正负数相加等于0 。把第9位的1 溢出
        例如:
                0000 0101
                1111 1011

例如 -6  一个字节的表现形式:
            0000 0110 (6)
                    ^
            1111 1001
                    + 1
            1111 1010(-6)

-1 取反  求+6(验证正数:利用负数 -1  取反)
            1111 1010(-6)
                    -1
            1111 1001
                    ^
            0000 0110(6)

-1 的表现形式:
            0000 0001 (1)
                    ^
            1111 1110
                    + 1
            1111 1111(-1)

-128  表现形式

1000 0000 (128)
                    ^
            0111 1111
                    +1
            1000 0000    (-128)
Java中基本数据类型(primitive)
    默认的整数int  默认浮点数 double
    升格 自动转换    隐士转换
    降格 强制转换     显示转换

表达式的数据类型自动提升
        所有byte 型,short 型和char型的值将被提升到int型
        如果一个操作数是long型,计算结果就是long型
        如果一个操作数是float型,计算结果就是float型
        如果一个操作数是double型,计算结果就是double型

例子:
    class TypeDemo{
    public static void main(String [] args){
        int i = 128;
        byte b3 = (byte)i;//这里不强制转换。编译提示缺失精度。
        //结果是-128???
        System.out.println(b3);
        }

}
    以上用到2个知识点:
        1:b3的类型是byte 是1个字节。 i 的类型是int 是4个字节。
        将i 赋值给 b3 需要强制转换。
        2:强转后的精度缺失。
        int  i :      0000 0000   0000 0000   0000 0000   1000 0000    (整型128)
        byte b3:                                           1000 0000    (-128)

截取了剩下: 1个字节即    1000 0000    
        1000 0000 数值=?
        1000 0000
                ^
        0111 1111
                +1
        1000 0000 (-128)
    算术运算符:注意问题。
        1.取模: %    5%-2 = 1;(对负数取模,模数负号忽略不计)
        2."/"除号,它的整数除和小数除是有区别的:整数间做除法:保留整数部分舍弃小数部分。
            例如:int x = 3510; x = x/1000*1000; x 结果:3000;
        3."+"除字符串想加功能外,还能把非字符串转换成字符串。
            System.out.println("5+5="+5+5)//打印结果是?
            5+5=55
    short s = 3;
    s = s +3;//编译通不过,需类型转换
    s+=3; //可以通过,有内置的类型机制

&&  ||  存在短路现象 。boolean1 &&(||) boolean2  如果boolean1  满足条件,boolean2 不参与运算

^ :boolean1 ^ boolean2   true ^ false   true
    ! : !boolean 取反操作。
    ~ : 按位取反。

注意:Java中不可以 写成 3<x<6  ,应该写成  x>3 & x<6;

"&" 和 "&&" 的区别:
    单& 时,左边无论真假,右边都进行运算。
    双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
    "|"和"||"的区别同理,双或时,左边为真,右边不参与运算。
    异或(^)与或(|)的不同之处是:当左右都为true时,结果为false。

&运算 权限的分配:   1111 & 0100     1111 & 1000      1111 & 0010    1111 & 0001

逻辑运算不存在短路的理由:
        一般用于权限中:用最大权限(是(|)或运算而不是简单相加:避免重复。) & 单个权限。如果为true(真)则有权限。如果为false(假)没有权限。
        无论。有没有权限,两边都参与运算。
    位运算 对二进制的操作。

判断结构:if else
    switch
        支持的类型 byte short int char
        结束:遇到break; 或者 程序运行到switch结尾。
    简写案例:(需求判断 月份属于那个季节)

class SeasonDemo
{
    public static void main(String[] args)
    {
        int x = 7;
        switch (x)
        {
            case 12://System.out.println("冬季");可以省略
            case 1://System.out.println("冬季");可以省略
            case 2:
                System.out.println("冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("不存在的月份");
        
        }
    }
}
这里使用一个简单的算法进一步简化算法:如下
    int x = 12;
        if(x <1 | x>12){
            System.out.println("不存在的月份");
            return;
        }
        int y = (x+2) /3;//精华部分算法。
        System.out.println(y);
        switch(y){
            case 1:
                System.out.println("1季度");
                break;
            case 2:
                System.out.println("2季度");
                break;
            case 3:
                System.out.println("3季度");
                break;
            case 4:
                System.out.println("4季度");
                break;
            default:
                System.out.println("计算不到值");
        }
//int y = (x+2) /3;//精华算法?

循环
    while(){}    VS   do{}while();(先执行一次在判断条件)

for(初始化表达式;循环条件表达式;循环后的操作表达式)
    {
        执行语句; (循环体)
    }

while 和for 可以互换,区别在于for 为了循环而定义的变量在for循环结束时就在内存中释放,
                                  while 循环使用的变量结束后还可以继续使用。
练习用2中循环打印99

class SeasonDemo
{
    public static void main(String[] args)
    {
        for(int i = 1;i<10;i++){
            for(int j =1;j<=i;j++){
                System.out.print(j+"x"+i+"="+j*i+"\t");
            }
            System.out.println();
        }
        int a=1;
        while(a<10){
            int b =1;//位置很重要,第一次和int a= 1 写到了一起。结果:每次都是b ==a  没有循环。
                    //为了循环每次都需要初始化b 的值,才可以从1开始循环,不然永远都是 b ==a ;
            while(b<=a){
                
                System.out.print(a+"x"+b+"="+a*b+"\t");
                b++;
            }
            
            System.out.println();
            a++;
        }
    }
}

函数:(function)
    1.一段独立的程序
    2.修饰符  返回值 函数名(参数类型1 参数名称1,参数类型2 参数名称2,.....){
            函数body;
            return ; //只有void 类型 的返回值才可以不写 return
        }
    3.形参只是在函数内有效(类似 for)
    注意:函数中只能调用函数,不可以在函数内部定义函数。( 不可以嵌套)
        定义函数时,函数的结果应该返回给调用者,交由调用者处理。

函数的重载(overload)
    在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
    返回值类型无要求,只看类型。

时间: 2024-08-07 20:52:00

Java基础(移位,函数)的相关文章

java基础--常用函数总结

java基础--常用函数总结 2019-3-16-23:28:01-----云林原创 1.split()字符串分割函数 将一个字符串分割为子字符串,然后将结果作为字符串数组返回. 2.Math.floor( )舍掉小数取整数 3.Math.rint( )四舍五入取整数 4.Math.ceil( )进位取整数 5.IndexOf( )查找特定字符出现的索引 ----------------------------------------->特定字符出现的最先出现的位置:IndexOf(): ---

黑马程序员-Java基础-语句&amp;函数

第一讲  语法结构 1.  判断结构 1)  If  else 2)  三元运算符: 好处:可以简化if  else代码: 弊端:因为是一个运算符,所以运算完成必须要有一个结果: 格式:变量 = (条件表达式)?表达式1:表达式2 练习: 2.  选择结构——switch  case  break  default 1)  书写格式: Switch(表达式)//表达式中的值类型只能是:byte  short  int  char { Case 取值1: 执行语句: Break; Case 取值1

Java基础之函数

代码实例: package com; public class Test {     /**      * 数字相加      * @param a 形式参数      * @param b 形式参数      * @return 返回int 这个结果是a+b      */     public static int add(int a,int b){         int c = a+b;//执行语句         toString(a,b);         return c;    

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

黑马程序员——Java基础语法(三) 函数

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 函数 1. 定义:Java中,函数也叫方法,是具有特定功能的一段独立小程序. 2.格式 :修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2)  { 执行语句; return 返回值; } 返回值类型:函数运行后的结果的数据类型. 参数类型:形式参数的数据类型. 形式参数:是一个变量,用于存储调用函数时传给函数的实际参数. 实际参数:传递给形式参数的具体值.

Java基础四

Java基础四 一.Switch语句 二.if和switch区别 推荐使用if 三.函数 Java中的函数和方法是同一个词 四.数组 4.1.数组常见错误 五.内存机制 六.转换成十六进制 移位 &操作 6.2 查表法求十六进制 查表法很多时候都非常好用,这样就非常好了,真的非常好用 算的时候直接移四位,我喜欢,我觉得以后可以多做移位运算,真的是简单方便 6.3 查表法求星期几

历经5年锤炼(史上最适合初学者入门的Java基础视频)--视频列表

\JavaSE基础视频01\01-计算机语言概述.avi;\JavaSE基础视频01\02-Java语言的跨平台原理(JVM).avi;\JavaSE基础视频01\03-Java语言(JDK&JRE).avi;\JavaSE基础视频01\04-Java语言(JDK的下载与安装).avi;\JavaSE基础视频01\05-Java语言(JDK中的命令行工具).avi;\JavaSE基础视频01\06-Java语言(命令行简介).avi;\JavaSE基础视频01\07-Java语言(环境变量配置)

面试可能遇到java基础知识

1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. - 继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类).继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的<Java与模式>或<设计

Java基础进阶整理

Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基础没有涉及到)的进行较全面的理解已经整理,只要充分掌握了基础知识,学习高级部分的知识才会事半功倍犹如轻车熟路一般容易上手. 正文: CLASSPATH的设置:我们知道运行java必须要设置CLASSPATH环境变量,但是sun  java 1.4之后改进了设计,JRE会自动搜索当前路径下的类文件,而

Java基础语法(一)---关键字、常量、变量、运算符

Java基础语法(一)---关键字.常量.变量.运算符一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型: byte(1字节,最大值127) short(2字节,最大值为2^15-1) int(4字节,最大值为2^31-1) long(8字节,最大值为2^63-1) 浮点类型: float (单精度实数在内存中占32bit 有效数字为6~7位) double(双精度实数占内存单元为64bit 有效数字为15~1