黑马程序员 -- Java基础学习(1)

来源:互联网 发布:linux命令cp中的r 编辑:程序博客网 时间:2024/06/05 15:32

------- android培训、java培训、期待与您交流! ----------


基本常识


软件

一系列按照特定顺序组织的计算机数据和指令的集合

人机交互

图形化界面命令行方式:控制台dirmd:创建目录rd: 删除目录,必须保证目录为空cdcd..del:删除文件(包括文件夹内的文件)        del *.txt 删除所有txt文件exit

Java语言概述

与平台无关Java虚拟机JVM Java Virtual Machine虚拟机依赖于系统三种技术架构J2EE/JavaEE (Servlet JSP)J2SE/JavaSEJ2ME/JavaME

语言环境

JRE Java Runtime EnvironmentJDK Java Development Kit
Java平台图
蓝色:开发工具

环境设置技巧
把变化的部分提取出来:haha=D:\jdk1.6.0_24
用%%动态获取某个已存在的环境变量:%haha%
临时配置环境变量:set
set path =
只在当前命令行窗口有效
添加新值:set path = 新值;%path%
通过start开启新的窗口,会沿用原来的配置

步骤

1. 编写.java文件2. javac 编译3. java 运行

设置classpath

set classpath = ***;清空是等号后不加字符虚拟机启动时先找classpath中的类再找当前目录的如果不加分号只在classpath中找最好不要加分号如果要访问当前目录set classpath = .;***点代表当前目录path相反,会现在当前路径寻找,找不到再到环境变量

Hello world程序

命名:驼峰标示类名首字母大写,每个单词大写程序的起始点:main函数保证该类的独立运行

注释

文档注释/** 作者版本功能*/调试程序多行注释中不能有多行注释写代码先写:需求思路步骤

语言基础


标示符

26个英文字母大小写,数字0-9,符号_$组成合法:不可以数字开头不可使用关键字严格区分大小写

常量

整数八进制:0开头十六进制:0x开头进制转换十进制转二进制:除以2取余数Integer.toBinaryString();二进制转十进制:乘以2的幂数十进制八进制互转十进制十六进制互转十进制先换成二进制四个二进制位就是一个十六进制位三个二进制位就是一个八进制位负数的二进制对应的正数二进制取反加1所以负数的二进制最高位是1小数布尔型字符 单引号’ ‘字符串 双引号 “”null

变量

内存中的空间,存储不确定的数据
名称:变量名,类型:数据类型,数据
强类型语言:对具体的数据都进行了不同的定义,对类型的划分非常细致数据类型
正数默认int,小数默认double
byte 一个8位:-128~127short 16位:-32768~32767int 48CPU缓存:节约内存float 48double 88char 0~6553528定义:数据类型 变量名 = 初始化值;float f = 2.3f; float变量需要标示char ch = ‘4’; 字符4类型转换自动类型提升(隐式):向上提升强制类型转换(显式)b = (byte)(b+2);int  float 运算:转换为float‘a’ + 1ASCII码加1(char) (‘a’ + 1)

运算符

算术运算符取模1%-5 = 1-1%5 = -1字符串连接符 “” + “”字符串数据和任何数据使用+都是连接符,最后都会转成字符串转义字符 \通过反斜线来转变后面字母或符号的含义\n 换行\b 退格(backspace\r 回车\t 制表符(tabLinux中换行是\n,在windows中是\r\nDOS能直接识别\nchar c = ‘’;char两个字节,中文汉字也是两个字节赋值运算符:=,+=,-=,*=,/=,%=short s = 4;s+=5; 是正确的,会自动转换s = s + 5; 则会编译出错比较运算符== 结果为true或false(boolean型)逻辑运算符:连接布尔类型的表达式^ 异或&& || 短路位运算符<< 左移:左移一位乘以2>> 右移:右移一位除以2取整>>> 无符号右移带符号左右移会保留原数字的符号(最高位)& | ^ 按位运算异或同一个数两次结果不变(简单加密原理)~ 取反负数:正数的反码+1练习1.最有效率的方式计算2乘以8:位运算2<<32.对两个整数变量的值进行互换,不通过第三个变量OperateDemo2.javan = n + m;m = n - m;n = n - m;若n m 非常大,容易溢出n = n ^ m;m = n ^ m;n = n ^ m;3.获取16进制表示OperateDemo3.java求十六进制的最低四位:&15n个低四位:先右移(无符号)再&1512转为16进制(char)(12-10+’a’)12 - 10 = 22 + ‘A’ = 67(char)67三元运算符(条件表达式)?表达式1:表达式2会自动提升

程序流程控制

判断结构 ifif else 与三元运算符:三元运算符必须有运算结果选择结构 switchswitch (表达式) {    case 取值1:    执行语句 ;    break;    case 取值2:    执行语句;    break;    …    default:    执行语句;    break; //可省略}选择类型只有 byte short int charcasedefault结束条件可以多个case一起case 3:case 4:相对高效,但是区间判断不简便,判断的具体数值不多时使用循环结构whiledo while先执行一次后再判断条件forfor (初始化表达式;循环条件表达式;循环后的操作表达式) {执行语句}变量的作用域问题for的循环增量作用域只在{}中如果要在循环结束后使用变量的值则要用while练习1ForTest.java条件表达式要有真假其他合法表达式就可以初始化表达式和循环后的操作表达式可以有多个,用逗号隔开初始化表达式和循环后的操作表达式可以不写无限循环的最简单表现形式for (;;) {}while(true) {}练习2ForTest2.javaForTest3.javafor循环嵌套九九乘法表for (int x=1; x<=9; x++) {for (int y=1; y<=x; y++) {System.out.println(y+”*”+x+”=”+y*x+”\t”);}System.out.println();}其他语句break:选择结构或循环结构continue:只用于循环结构应用范围:当前所在循环/结构单独存在时下面不可以有语句循环标示a: for()…break a跳出a循环continue a继续该循环(可用于嵌套)

函数

对功能的定义,提高复用性修饰符 返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2, …) {执行语句;return 返回值;}返回值类型为void时可以省略return语句不能被输出不能在函数中调用函数定义FunctionDemo2.java明确返回值类型明确参数列表:类型,个数明确功能,不要添加多余(比如打印)重载 overload在同一个类中允许存在一个以上的同名函数,只要参数个数或类型不同即可和返回值类型没关系

数组

同一种类型数据的集合:容器定义元素类型[] 数组名 = new 元素类型[元素个数或数组长度];元素类型[] 数组名 = new 元素类型[] {元素, 元素, …};内存结构 stack:数据使用完毕会自动释放 heap实体:数组和对象实体中的变量都有默认初始化值boolean: false垃圾回收机制:回收不用的实体不同引用可指向同一实体常见异常ArrayIndexOutOfBoundsException 数组脚标越界异常访问到了数组中不存在的脚标NullPointerException 空指针异常引用没有指向任何实体却操作实体中元素时操作获取元素:遍历获取数组元素个数:数组名.length数组的引用及地址 [I@de6ced@左边: [ 数组, I int@右边:哈希值练习:获取最值ArrayTest.java临时变量=元素临时变量=脚标重载:double类型数组,int类型数组,排序选择排序ArrayTest2.java内循环一次,最值出现在头脚标位置冒泡排序相邻两个元素比较注意避免脚标溢界最快:希尔排序提高效率不直接换元素,把要互换的脚标记录在栈中Array.sort();位置置换代码封装成函数查找最简单:遍历折半查找有序数组,提高效率ArrayTest4.javawhile(arr[mid]!=key)while(mid<=max)练习:在有序数组中插入元素用折半查找的原理插入的元素总在两个数中间练习:进制转换ArrayTest5.javaArrayTest6.java 查表法十进制—>二进制while(num>0)%2num/2查表法定义二进制的表char[] chs = {‘0’, ‘1’};定义一个临时容器char[] arr = new char[32];定义指针int pos = arr.length;循环while(num!=0) {int temp = num&1;arr[- - pos] = chs[temp];num = num>>>1;}十进制 --> 十六进制循环八次&15if(>9) 输出字母(char)-10+‘A’>>>4 循环查表法用数组临时存储所有元素,建立对应关系char chs[temp]解决结果是反的问题StringBuffer存储模2的结果append()反向输出:reverse()用数组char[] arr = new char[8];for(int i = arr.length-1; i >= 0; i++) 倒着打印也可以倒着存入数组,正着打印pos = arr.length;arr[—pos] = chs[temp];去掉多余的0while循环:while(num!=0)int pos =0;arr[pos++] = chs[temp];字符数组元素默认值’\u0000’ 空位不打印空位:for(int i = pos-1;…优化:提取转换方法ArrayTest7.javapublic static void trans(int num, int base, int offset) {}int temp = num&base;arr[- -pos] = chs[temp];num = num>>>offset;if (num == 0) 输出0return;二维数组定义int[][] y; int y[][]; int[] y[];int[][] arr = new int[3][];arr[0] null,默认初始化arr[0] 是一个地址二维数组的长度:包含的一位数组的个数初始化int [][] = new int[3][];arr[0] = new int[3];arr[1] = new int[1];arr[2] = new int[2];int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};遍历:二重循环嵌套




0 0
原创粉丝点击