java环境配置相关
JDK - Java Development Kit (java开发套件)
JRE - Java Runtime Environment(java程序运行环境)
JVM-Java Virtual Machine(java虚拟机)
java命令行
cd 进入盘符或目录
cd.. 后退一级
dir 显示当前目录下所有文件
tab 自动补全
配置classpath
1.通过配置环境变量classpath成class文件所在目录可以在任何地方运行
2.命令行 “java-classpath”=路径+ class文件
3.命令行中直接输入echo %classpath%
---- set “classpath=%classpath%;”+路径(当前窗口有效)(优先级从左到右,先到先得)
一次性配置环境变量
echo %path%
set JAVA_HOME="jdk目录"
set path=%JAVA_HOME%\bin;%path%
echo %path%
Java HelloJava
运用Windows命令行来执行一个java程序:
1.首先建立一个后缀名为 .java 的文本文件并填写代码
2.再在Windows命令行中通过javac命令将 .java 文件编译成 .class (类)文件
3.最后通过java命令+class文件(不用后缀)将程序运行,会在下一行输出程序运行结果。
数据类型
八大基本数据类型——没有方法
boolean
byte(8 bits)
short(16 bits)
int(32 bits)
long(64 bits)
float(32 bits)
double(64 bits)
char(16 bits)
引用类型
class
interface
Array
null Type
enum(枚举类型)
对应包装类——有方法
nteger 、Long、Short、Byte、Character、Double、Float、Boolean
数字类型转换
自动类型转换
1、数字之间,从低精度到高精度可以自动转换;
2、从高精度到低精度不能自动转换,因为会丢失精度
强制类型转换(丢失精度)
( 强制转换类型 )+变量名
关键字
标识符 不能用关键词
第一个字符必须是字母、_或者是 $ ,后一个字符可以是任何字符或数字,标识符大小写敏感
java的命名规范-驼峰命名法
1、多个单词直接连在一起,直接不用下划线或斜杠
2、类名每个单词首字母大写
3、变量名和方法名第一个单词首字母小写,其他单词大写
程序是处理数据的
变量是用来保存数据的地方,具有具体的数据类型,必须先声明定义再使用,变量的值是可以改变的
运算符
1.数字运算符 + - * / % (表达式:先执行表达式,得出一个值,再把这个值赋给前面的变量)
取余运算符% 98%10=8 13%5=3
方法调用: 方法名();
2.比较运算符
3.逻辑运算符 && || !
4 .&&和&的区别
&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。另外,&还用作位运算。
三种执行方式
1.顺序执行
2.分支执行
i.if else
ii.switch case
a.要加break,否则从头到尾会一直执行,直到遇到break为止
b.最后可以加default,不进行条件判断,可以直接走进去
c.只支持以下几种类型:int byte short char String Enum
d.在分支比较多的时候,优先使用switch
3.循环执行
i.for
ii.while——do while 先执行再判断
——while do 先判断再执行
字符串
1.拼接(两种方法): + (占用内存) 或者 str.concat(字符串).concat(字符串);
2.查找 str.indexOf(字符串) 找不到为-1
3.替换 str.replace(oldChar,newChar);
4.StringBuffer和StringBuilder
str1.replaceAll(regex, replacement)
str1.replaceFirst(regex, replacement)
使用+号拼接字符串,每次拼接都会创建一个新的字符串,占用内存多,效率低
StringBuffer和StringBuilder在拼接过程中使用同一个对象,所以效率高(append方法)
StringBuffer是线程安全的,会防止多个线程同时访问String,它添加了额外的防护,所以比StringBuilder慢
拓展:
StringBuilder
```
StringBuilder builder = new StringBuiler(); //构建
builder.append(ch);
builder.append(str); //添加一部分内容——字符或字符串
String str = builder.toString(); //生成字符串
builder.setCharAt(int i , char c); //索引位i的字符替换成字符c
builder.insert(int i , char c);
builder.insert(int i , string str); //索引位i插入字符或字符串
builder.delete(int start,int end) //删除start到end-1的字符串并且偏移
StringBuilder与StringBuffer的区别
> StringBuffer线程安全速度慢
> Stringbuilder多线程不安全速度快
> 两者的方法一样
数组
数组是存储固定长度相同类型的元素集合的数据结构(从0开始)
一维数组的三种声明和创建方式
//1)
int[] nums={4,5,8,9};
//2)
//String[] name=new String[10];
String[] names;
names=newString[10];
System.out.println(names);
//3)
Date[] dates=newDate[]{newDate(),newDate()};
异常:数组越界异常 java.lang.ArrayIndexOutOfBoundsException
二维数组
publicstaticvoidlearn2DArray(){
// 定义
int[][] nums = { {2,3,7}, {5,6}, {8,3,8,6} };
String[][] names =newString[][] { {"tom","ben"}, {"mary","alice"}, {} };
String[][] names2 =newString[4][3];
// 访问和遍历
System.out.println(names[1][0]);
System.out.println(nums[2][3]);
for(inti =0; i < names2.length; i++) {
String[] nameA = names2[i];
System.out.println(i);
for(intj =0; j < nameA.length; j++) {
nameA[j] ="tom";
}
}
}
算法
概念
a)解决问题的思路和步骤;
b)独立于编程语言的;
c)常用算法:各种排序算法等(二分查找法);
递归
递——自己调用自己
归——退出条件,在某些条件满足时,停止调用自己; 若没有停止,会出现 == 栈溢出 ==死循环 异常 java.lang.StackOverflowError