javae 4000 e学习日记之java基础之初识java
2017-08-25 15:18
239 查看
准备工作
jdk下载安装
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(官网下载)
安装分两步(第一步安装jdk,第二步安装jre(最好安装在全英文目录下))
jdk: java工具包
jre: java运行环境
jvm: java虚拟机
配置环境变量:
系统变量→新建 JAVA_HOME 变量
在Path后加 ; %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
进入cmd
输入 java 如果显示一堆中文+英文
再输入javac 如果显示一堆中文+英文
上述两者均满足则配置成功,不然就失败了。
第一个程序代码:
在自己新建的一个英文目录下新建一个Hello.java文件用记事本打开在里面编写;
(注意java是强类型语言,区分大小写)
在根目录下按住shift键鼠标右键点击,打开cmd窗口
输入javac Hello.java(如果没有显示任何东西,表示编译成功)
再输入java Hello(显示Hello,第一个程序成功!)
标识符:(变量名,类名(首字母大写))
由字母,数字,下划线,美元符号组成,第一个不能是数字,
不能是关键字和保留字;
关键词:
(八大基本数据类型)
byte(基本数据类型 整型(1字节(一个字节8位)))
int(基本数据类型 整型(4字节))(默认)
short(基本数据类型 整型(2字节))
long(基本数据类型 长整型(8字节))
char(基本数据类型 字符型(2字节))
float(基本数据类型 单精度浮点数(4字节))
double(基本数据类型 双精度浮点数(8字节))(默认)
boolean(基本数据类型 布尔类型())
(基本语句关键词)
if(条件语句)
else(条件不成立)
do(循环前执行一次)
while (循环)
for(循环)
switch(条件分支语句)
case(分支语句 )
break(跳出当前一层循环)
default(条件分支结束)
continue(跳出一次循环)
return(返回)
(异常关键词)
try(异常捕获)
catch( 异常处理)
finally(在异常发生后仍执行)
throw(抛异常)
throws(声明异常)
(访问控制符)
public(类内部true,本包true,子类true,外部包true)
protected(类内部true,本包true,子类true,外部包false)
default(类内部true,本包true,子类false,外部包false)
private(类内部true,本包false,子类false,外部包false)
(类修饰符)
extends(继承)
abstract(可以修饰类和方法,抽象)
enum(枚举)
final(不可修改)
class( 类)
implements(实现)
interface(接口)
import(导包)
new(创建新对象)
super(调用父类方法或属性)
this(本对象)
static(静态修饰符)
void(没有返回值)
synchronized(同步)
package(包)
(不常用关键词)
assert(断言)
instanceof( 运算符是用来在运行时指出对象是否是特定类的一个实例)
native(调用其它语言)
strictfp(精确浮点)
transient(阻止实例中那些用此关键字声明的变量序列化(即反序列化后读取不到)),
volatile(每次访问从主内存中重读),
保留字
byValue, cast, false(不成立), future, generic, inner,
outer, rest, true(成立), var , goto(c语言中是跳出多层循环(但也不推荐使用)),const,null(空),operator,
基本数据类型转换
范围大小:
byte = char < short=char < int(默认类型) < long < float < double(默认类型)
当类型范围小的向大的转换(不需要强制转换(如果低级类型为char型,向高级类型(整型)转换时,会转换为对应Unicode码值,如果转换成浮点数的话,Unicode码值.0))
当类型范围大的向小的转换(需要强制转换)(同级也需要强制转换)
基本数据类型运算
算数运算符:
关系运算符
逻辑运算符
位运算符
赋值运算符
运算符优先级(算数运算符>关系运算符>逻辑运算符>赋值运算符)
三目运算符
基本数据类型对应的包装类型
short Short 2个字节
int Integer 4个字节
long Long 8个字节
float Float 4个字节
double Double 8个字节
byte Byte 1个字节
char Character 2个字节
boolean Boolean
数组(数组初始化(必须给定长度或给定元素))(是引用对象)
操作数组的类(Array,Arrays);
数组排序
冒泡排序
选择排序
插入排序
快速排序(要导包)
上述数组均为一维数组,二维数组如下
数组维度可以一直创建下去但实用性不高。
字符串对象
字符串连接
正则表达式
String(不可变(每次操作都要开辟新的内存空间))
StringBuffer:(字符串缓存区) (节约内存)
StringBuilder:(字符串缓存区(线程不安全(效率比StringBuffer高)))
jdk下载安装
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(官网下载)
安装分两步(第一步安装jdk,第二步安装jre(最好安装在全英文目录下))
jdk: java工具包
jre: java运行环境
jvm: java虚拟机
配置环境变量:
系统变量→新建 JAVA_HOME 变量
在Path后加 ; %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
进入cmd
输入 java 如果显示一堆中文+英文
再输入javac 如果显示一堆中文+英文
上述两者均满足则配置成功,不然就失败了。
第一个程序代码:
class Hello{ public static void main(String[] args){ System.out.println("Hello"); } }
在自己新建的一个英文目录下新建一个Hello.java文件用记事本打开在里面编写;
(注意java是强类型语言,区分大小写)
在根目录下按住shift键鼠标右键点击,打开cmd窗口
输入javac Hello.java(如果没有显示任何东西,表示编译成功)
再输入java Hello(显示Hello,第一个程序成功!)
标识符:(变量名,类名(首字母大写))
由字母,数字,下划线,美元符号组成,第一个不能是数字,
不能是关键字和保留字;
关键词:
(八大基本数据类型)
byte(基本数据类型 整型(1字节(一个字节8位)))
int(基本数据类型 整型(4字节))(默认)
short(基本数据类型 整型(2字节))
long(基本数据类型 长整型(8字节))
char(基本数据类型 字符型(2字节))
float(基本数据类型 单精度浮点数(4字节))
double(基本数据类型 双精度浮点数(8字节))(默认)
boolean(基本数据类型 布尔类型())
(基本语句关键词)
if(条件语句)
else(条件不成立)
do(循环前执行一次)
while (循环)
for(循环)
switch(条件分支语句)
case(分支语句 )
break(跳出当前一层循环)
default(条件分支结束)
continue(跳出一次循环)
return(返回)
(异常关键词)
try(异常捕获)
catch( 异常处理)
finally(在异常发生后仍执行)
throw(抛异常)
throws(声明异常)
(访问控制符)
public(类内部true,本包true,子类true,外部包true)
protected(类内部true,本包true,子类true,外部包false)
default(类内部true,本包true,子类false,外部包false)
private(类内部true,本包false,子类false,外部包false)
(类修饰符)
extends(继承)
abstract(可以修饰类和方法,抽象)
enum(枚举)
final(不可修改)
class( 类)
implements(实现)
interface(接口)
import(导包)
new(创建新对象)
super(调用父类方法或属性)
this(本对象)
static(静态修饰符)
void(没有返回值)
synchronized(同步)
package(包)
(不常用关键词)
assert(断言)
instanceof( 运算符是用来在运行时指出对象是否是特定类的一个实例)
native(调用其它语言)
strictfp(精确浮点)
transient(阻止实例中那些用此关键字声明的变量序列化(即反序列化后读取不到)),
volatile(每次访问从主内存中重读),
保留字
byValue, cast, false(不成立), future, generic, inner,
outer, rest, true(成立), var , goto(c语言中是跳出多层循环(但也不推荐使用)),const,null(空),operator,
基本数据类型转换
范围大小:
byte = char < short=char < int(默认类型) < long < float < double(默认类型)
当类型范围小的向大的转换(不需要强制转换(如果低级类型为char型,向高级类型(整型)转换时,会转换为对应Unicode码值,如果转换成浮点数的话,Unicode码值.0))
当类型范围大的向小的转换(需要强制转换)(同级也需要强制转换)
基本数据类型运算
算数运算符:
+(加) -(减) *(乘) /(除) %(整除) ++(自加) --(自减)
关系运算符
==(等于) !=(不等于) >(大于) <(小于) >=(大于等于) <=(小于等于)
逻辑运算符
&&(短路与(当第一个不满足就不执行)) ||(短路或(当第一个满足就执行)) !(非) ^(异或) &(按位与) |(按位或)
位运算符
!(非) ^(异或) &(按位与) |(按位或) >>(左移) <<(右移) >>>(无符号左移)
赋值运算符
=(赋值)
运算符优先级(算数运算符>关系运算符>逻辑运算符>赋值运算符)
三目运算符
int x = 10; int y = 10; int max = (x > y)?x:y;
基本数据类型对应的包装类型
short Short 2个字节
int Integer 4个字节
long Long 8个字节
float Float 4个字节
double Double 8个字节
byte Byte 1个字节
char Character 2个字节
boolean Boolean
数组(数组初始化(必须给定长度或给定元素))(是引用对象)
int[] arr = {1,2,3};//推荐使用 int arr[] = {1,2,3}; int[] arr = new int[10]; int arr[] = new int[10]; int[] arr = new int[]{1,2,3};
操作数组的类(Array,Arrays);
数组排序
冒泡排序
int[] arr = {464,464,131,649,399,6,46,1369}; for(int x = 0;x < arr.length-1;x++){ for(int y = x + 1;y < arr.length;y++){ int w = 0; if(arr[x] > arr[y]){ w = arr[x]; arr[x] = arr[y]; arr[y] = w; } } }
选择排序
int[] arg = {464,464,131,649,399,6,46,1369}; for (int x = 0;x < arg.length - 1 ;x++ ){ int w = x; for (int j = i+1 ;j < arg.length ;j++ ){ if (arg[w]>args[j]){ w = j; } } if (w != i){ int temp = arg[i]; arg[i] = arg[w]; arg[w] = temp; } }
插入排序
int[] tab = {464,464,131,649,399,6,46,1369}; for(int x = 1;x < tab.length;x++){ for(int y = x;y > 0;y--){ if(tab[y] < tab[y-1]){ int te = tab[y-1]; tab[y-1] = tab[y]; tab[y] = te; }else break; } }
快速排序(要导包)
int[] tab = {464,464,131,649,399,6,46,1369}; Arrays.sort(tab); for(int y = 0;y < tab.length;y++){ System.out.println(tab[y]); }
上述数组均为一维数组,二维数组如下
int[][] arr = {{11,15,25},{46,794,66},{464,454,48}}; //数组可以看作表格来处理
数组维度可以一直创建下去但实用性不高。
字符串对象
字符串连接
String s1 = new String("Hello"); String s2 = new String("World"); String s = s1 + s2; String s3 = "Hello"; String s4 = "World"; String s5 = s3 + s4; //但s5 != s 而 s5.equals(s6):返回true //关于equals方法(比较String的对象的内容())(虽然是继承于Object类的方法,但进行了重写) //而==比较的是栈内存中存的东西是否相同(基本数据类型变量直 abda 接在栈中储存值,而引用类型储存在栈中的是堆中的内存地址) //在Object类的equals()方法(底层用的也是==) //关于equalsIgnoreCase():(忽略大小写进行内容对比) String ss = "helloworld"; s.equalsIgnoreCase(ss); // String str = "ABC"; System.out.println(str.toLowerCase()); String stc = str.toLowerCase(); System.out.println(stc.toUpperCase()); //toLowerCase():将字符串全部转换小写 //toUpperCase():将字符串全部转换大写 // String s = "464bgsags41236"; System.out.println(s.startsWith("4")); System.out.println(s.endsWith("6")); //startsWith():判断字符串是否以指定字符串开头 //endsWith():判断字符串是否以指定字符串结尾 // String s = "b5g4s0a5g3s"; String[] tab = s.split("\\d"); for(int i = 0;i < tab.length;i++){ System.out.println(tab[i]); } //split():以指定字符串或正则表达式分割字符串转换成字符串数组 // String s = "b5g4s0a5g3s"; String[] tab = s.split("\\d",2); for(int i = 0;i < tab.length;i++){ System.out.println(tab[i]); } //split()以指定字符串或正则表达式分割字符串转换成字符串数组 ,指定数组长度
正则表达式
\d 表示数字 \w 表示 ^ 开头 $ 结尾 | 或(不能加空格) + 表示1个或多个 ? 非(不能加空格) & 与(不能加空格) \W 表示 \S 表示非空格 \s 表示空格 \D 表示非数字 [0-9] 表示数字 [a-Z] 表示大小写字母 [a-z] 表示小写字母 {1,5} 最小长度1,最大长度5 {10} 长度为10 . 表示任何字符 * 表示0个或多个 或是Unicode编码
//使用 Pattern p = Pattern.compile("\^a\\wb$");//(注意要加转义符'\') Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); //当字符串与正则表达式匹配b就为true
String(不可变(每次操作都要开辟新的内存空间))
StringBuffer:(字符串缓存区) (节约内存)
StringBuilder:(字符串缓存区(线程不安全(效率比StringBuffer高)))
public class Test { public static void main(String[] args) { String str = ""; long starTime = System.currentTimeMillis(); for(long i = 0;i < 30000;i++){ str = str + i; } long endTime = System.currentTimeMillis(); long time = endTime - starTime; System.out.println("String消耗时间:" + time); StringBuilder sbr = new StringBuilder(""); starTime = System.currentTimeMillis(); for(long i = 0;i < 10000000;i++){ sbr.append(i); } endTime = System.currentTimeMillis(); time = endTime - starTime; System.out.println("StringBuilder消耗时间:" + time); StringBuffer sb = new StringBuffer(""); starTime = System.currentTimeMillis(); for(long i = 0;i < 10000000;i++){ sb.append(i); } endTime = System.currentTimeMillis(); time = endTime - starTime; System.out.println("StringBuffer消耗时间:" + time); } }
相关文章推荐
- 黑马程序员Java基础加强41-48学习日记
- 黑马程序员_java学习日记_Java基础小知识学习整理
- 黑马程序员-------学习日记Java基础 第四天
- JAVA基础第五天学习日记_面向对象开发思想、匿名对象、封装、私有、构造函数
- 黑马程序员Java基础加强49-56学习日记
- 黑马程序员Java基础加强9-16学习日记
- 黑马程序员-JAVA学习日记-java编程基础1
- JAVA基础第三天学习日记_循环语句、函数、数组
- JAVA基础第四天学习日记_数组
- Java基础第十三天学习日记_String字符串
- Java基础第十二天学习日记_线程、线程的同步、线程间通讯
- java软件工程师培训学习日记------java语言核心基础之认识JAVA
- Java基础第十天学习日记_包、jar包
- JAVA基础第六天学习日记_static关键字、文档、静态代码块、单例开发模式
- java软件工程师培训学习日记------java语言核心基础之模式
- 黑马程序员-------学习日记Java基础 第三天
- Java基础第十一天学习日记_线程、同步、死锁
- 黑马程序员Java基础加强17-24学习日记
- JAVA基础第八天学习日记_多态
- 黑马程序员Java基础加强33-40学习日记