王克晶(WKJ)
1.碰到问题怎么办?
1)找同桌、同学
2)找项目经理
3)找讲师
2.学习Java的窍门?
1)多想
2)多练
3.小要求:
1)课堂气氛活跃一些
笔记:
1.Java开发环境:
1)Java编译运行过程:------------常见面试题
1.1)编译期:.java源文件,经过编译,生成.class字节码文件
1.2)运行期:JVM加载.class并运行.class
特点:跨平台、一次编程到处使用
2)名词解释:---------------------常见面试题
2.1)JVM:java虚拟机
加载.class并运行.class
2.2)JRE:java运行环境
除了包含JVM以外还包含了运行java程序所必须的环境
JRE=JVM+java系统类库(小零件)
2.3)JDK:java开发工具包
除了包含JRE以外还包含了开发java程序的必须的命令工具
JDK=JRE+编译、运行等命令工具
说明:
1)运行java程序的最小环境为JRE
2)开发java程序的最小环境为JDK
3)配置变量------------了解
3.1)JAVA_HOME:指向JDK的安装目录
3.2)CLASSPATH:表示类的搜索路径,一般简写为.
3.3)PATH:指向JDK下的bin目录
2.eclipse:
1)IBM、开源的、免费的、不需要安装仅需解压即可
2)开发步骤:
2.1)新建Java项目----------------小区
2.2)新建Java包------------------楼+单元
2.3)新建Java类------------------房子
3)注释:解释性文字
3.1)单行注释://
3.2)多行注释:/* */
3.3)文档注释:/** */----------7月下旬讲
练习:
1.创建Java项目MyProject
2.在MyProject中创建Java包mypackage
3.在mypackage中创建Java类MyClass,main()中:
输出HelloWorld,并换行
4.在mypackage中创建Java类Test,main()中:
输出Hello,不换行
输出World,换行
输出欢迎大家来到达内,换行
输出当日事当日毕,换行
输出......
tmooc,每一天:
1)PPT:
2)经典案例:------Windows下配置环境变量
3)课后作业:
5
6
5
6
110
项目 包 类
东日瑞景小区 4号楼3单元 201
JSD1806
工作空间:所创建的所有java项目的默认保存地址
A:先装JDK再运行eclipse------------正确的
B:先运行eclipse再装JDK
eclipse----------本身就是用java语言写的
IBM公司用java语言写了个eclipse程序
然后让人们用eclipse写java代码
Java:开源的
eclipse:开源的
开源:开发源代码、免费的
PATH:/a/b;/c/d;/m/n;
javac
public class HelloWorld{
public static void main(String[] args){
}
}
public class HelloWorld {
public static void main(String[] args) {
}
}
package day01; //声明包day01 public class HelloWorld { //声明类HelloWorld //主方法,为程序的入口 //程序的执行从main开始,main结束则程序结束 public static void main(String[] args) { //输出HelloWorld //1)严格区分大小写 //2)所有符号必须都是英文模式的 //3)每句话必须以分号结尾 //4)println():输出并换行 // print():输出不换行 System.out.print("Hello"); System.out.println("World"); System.out.println("今天天气不错,心情也不错"); System.out.println("欢迎大家来到达内"); } }
借助于开发工具------eclipse
JDK=JVM+java系统类库(小零件)+编译、运行等命令工具
Java编译运行过程:
1).java源文件,经过编译,生成.class字节码文件
2)JVM加载.class并运行.class(0和1)
假设QQ是用Java写的:
java版的QQ,经过编译,生成.class字节码文件
Windows版的JVM---------运行在Windows系统上
Linux版的JVM-----------运行在Linux系统上
IOS版的JVM-------------运行在IOS系统上
???版的JVM-------------运行在???系统上
跨平台、一次编程到处使用
银行系统------------服务器Windows系统
服务器Linux系统
Java
C语言编译运行过程:
.c源文件,经过编译,直接生成可执行文件(0和1)
QQ:用C语言写的
Windows版的QQ---------------运行在Windows系统上
Linux版的QQ-----------------运行在Linux系统上
IOS版的QQ-------------------运行在IOS系统上
???版的QQ-------------------运行在???系统上
每个操作系统的指令(0和1)是不同的
Windows:
你-------------01010101
Linux:
你-------------11110000
IOS:
你-------------10101010
我----------01010101
和----------10101010
你----------11110000
课上不要听热闹
课堂尽可能多的去消化东西
17天课程
Java:是一门计算机语言
www.taobao.com---------------Java写的
www.jd.com-------------------Java写的
饿了吗-----------------------Java写的
摩拜单车---------------------Java写的
银行系统---------------------Java写的
ATM机系统--------------------Java写的
...
共100个项目,共值100万
只有20个项目是用Java做的,但能挣80万
Web前端,UI设计,运维工程师----8,9个人
语言基础(7天)+面向对象(10天)
知道这个东西的人
熟练掌握这个东西的人----------------公司所需要的
java习题
- 简述Java编译及运行过程
- 名词解释JVM、JRE、JDK
- 下列关于Eclipse说法正确的是?
A.在源文件编写的同时Eclipse会自动的调用Java编译器编译该文件,如果出现任何编译错误,Eclipse会立刻发现,并提示给用户。
B.Eclipse中的Workspace是用于存储工程的路径。
C.Eclipse下载完成后,不需要特殊的安装,仅需解压即可。
D.Eclipse是开放源代码的Java开发平台。
- 实现JAVA HelloWorld(Eclipse)
获取字符串指定位置的字符
public class CharAtDemo { public static void main(String[] args) { String str = "helloworld"; /* * 要求:获取字符串中第五个位置的字符 * charAt(int index):char * 获取字符串中指定位置的字符 * * indexOf(char):int * 根据字符获取字符的下标 */ char dest = str.charAt(4); System.out.println(dest); } }
public class LastIndexOfDemo { public static void main(String[] args) { String str = "helloworld"; //返回字符l在字符串中最后一次出现的位置 int index = str.lastIndexOf('l'); System.out.println(index); } }
public class StartsWith_endsWithDemo { public static void main(String[] args) { /* * startsWith(String prefix):boolean * 判断目标字符串是否以指定内容开始 * 是 - true * 不是 - flase */ String str = "helloworld"; //判断str是否以helloworld开头 boolean flag = str.startsWith("helloworld"); System.out.println(flag); //true /* * endsWith(String suffix):boolean * 判断目标字符串是否以指定后缀结尾 * 是 - true * 不是 - false */ //判断str是否以wor结尾 flag = str.endsWith("wor"); System.out.println(flag); //false } }
去掉字符串的开头和结尾部分的空格部分
public class TrimDemo { public static void main(String[] args) { /* * trim():String * 去掉字符串的开头和结尾部分的空格部分 Tab */ String str = " hello world "; String dest = str.trim(); System.out.println(str); System.out.println(dest); } }
/** * * indexOf系列方法 * @author adminitartor * */ public class StringIndexOfDemo { public static void main(String[] args) { //0123456789 String str = "helloworld"; /* * indexOf(char) - int * 获取指定字符在目标字符串中第一次出现的索引 * 获取字符l第一次出现的位置(下标) */ int index = str.indexOf('l'); System.out.println(index); /* indexOf(String) - int * 获取指定子字符串在目标字符串中第一次出现的索引 * 注意:此时获取到的是子字符串中第一个字符出现的索引 * * 获取子字符串owo在目标字符串中第一次出现的位置 */ index = str.indexOf("owo"); System.out.println(index); /* * indexOf方法:找到指定字符/字符串在目标字符串中第一次 * 出现的索引,如果找的目标内容没有在字符串中出现,返回-1 */ index = str.indexOf('a'); System.out.println(index); /* * 找到字符l第二次出现的索引 * indexOf(char dest,int fromIndex) -int * 从字符串中的指定索引开始搜索指定字符第一次出现的下标 * * indexOf(String str,int formIndex)-int * 作用同上 */ index = str.indexOf('l', 5); System.out.println(index); } }
public class StringLengthDemo { public static void main(String[] args) { String str = "helloworld"; str = "我爱java!"; //7 /* * length():获取字符串中字符的个数 */ int len = str.length(); System.out.println(len); } }
public class SubstringDemo { public static void main(String[] args) { String str = "我非常热爱java"; /* * 要求:截取出子字符串“java” * substring(int beginIndex) - String * 从目标字符串中指定位置开始截取 * destination:目标 */ String destStr = str.substring(2); System.out.println(destStr); /* * 要求:截取出“非常热爱”子字符串 * substring(int beginIndex,int endIndex):String * 在javaAPI中很多类的很多方法中都会出现2个临界值, * 都是包头不包尾 * */ destStr = str.substring(1, 5); System.out.println(destStr); } }
import java.util.Scanner; public class SubStringDemo02 { public static void main(String[] args) { /* *练习:截取域名 *www.baidu.com *www.tedu.cn *www.域名.cn.com *要求:从控制台输入网址,定义一个方法用于截取出域名 *并打印输出 */ //用户输入网址 System.out.println("请输入网址:"); Scanner sc = new Scanner(System.in); String netAddress = sc.next(); //截取 String dest = subDest(netAddress); System.out.println("域名是:"+dest); sc.close(); } /** * 截取域名 * 思路:先获取网址中第一个.和第二个.的位置,再截取 * 两个点之间的内容(即域名) */ public static String subDest(String address){ //完成截取域名,并将域名返回 //获取第一个.的后一位字符的索引 int index = address.indexOf(".")+1; //获取第二个.的下标 int endIndex = address.indexOf(".",index); //截取目标域名 String dest = address.substring(index, endIndex); return dest; } }
String使用:
StringDemo.java
/** * 字符串是对象,创建有2种方式: * 1.直接给出字面量 2.通过new * 字符串的本质是字符数组,此字符数组用final修饰, * 所以字符串是不可变的对象 * * 字符串之间的拼接会产生新的字符串对象, * 而原字符串对象不改变 * * @author adminitartor * */ public class StringDemo { public static void main(String[] args) { //定义String字符串 String str = "abc"; //字符串字面量 直接量 str = str+"def"; System.out.println(str); //abcdef } }
/** * 字符串是对象,创建有2种方式: * 1.直接给出字面量 2.通过new * 字符串的本质是字符数组,此字符数组用final修饰, * 所以字符串是不可变的对象 * * 字符串之间的拼接会产生新的字符串对象, * 而原字符串对象不改变 * * * @author adminitartor * */ public class StringDemo { public static void main(String[] args) { //定义String字符串 String str = "abc"; //字符串字面量 直接量 // str = str+"def"; // System.out.println(str); //abcdef /* * 为了提高字符串的性能,实现字符串的重用,将字符串 * 字面量会缓存在字符串常量池中,当定义一个新的字符串 * 字面量时会先到常量池查找是否已经存在目标字符串对象 * 如果有,将常量池中引用保存的值赋给新引用,此新引用也 * 指向了已经存在的字符串对象,如果没有,那么新创建对象 */ String s1 = "xy"; String s2 = "abc"; System.out.println(str==s2); //true String s3 = new String("abc"); String s4 = new String("abc"); System.out.println(s3==s4); //false /* * 字符串字面量和new出来的字符串对象进行==比较 * 返回值一定为false。new出来的对象一定是新创建的。 */ System.out.println(s2==s3); //false /* * 画出以下代码的内存示意图并给出比较结果: * 1. * String s1 = "hello"; * String s2 = "world"; * String s3 = "hello"; * System.out.println(s1==s3) //true * * 2. * String s1 = "hello"; * String s2 = new String("hello"); * System.out.println(s1==s2) //false */ /* * 面试题:String */ String str1 = "hello"; String str2 = "world"; String str3 = "helloworld"; /* * 如果是字符串字面量直接拼接,java编译器在编译期间会 * 进行优化,直接将拼接的结果赋给变量 * String str4 = "helloworld"; */ String str4 = "hello"+"world"; String str5 = str1+str2; System.out.println(str3==str4); //true System.out.println(str3==str5); //false /* * 面试题2: * 以下这行代码中创建了几个字符串对象? * 2个 */ // String ss = new String("hello"); //2个 String ss1 = new String("hel"+"lo"); } }
/** * StringBuilder用于做大量字符串拼接运算,也叫做字符串生成器 * 避免了使用str+str过程中创建大量对象 * @author adminitartor * */ public class StringBuilderDemo { public static void main(String[] args) { String str = "a"; str += "b"; //str = str+"b"; str += "c"; str += "d"; //以以上方式拼接n多个字符串,在内存中会创建大量的String对象 //拼接1000000后的结果是我所要的结果 /* * java中如果实现大量的字符串拼接,不推荐使用+ * java中使用StringBuilder类是实现字符串的大量拼接 */ //使用StringBuilder拼接字符串 //StrinBuilder也叫做字符串生成器 StringBuilder sub = new StringBuilder(); sub.append("a"); sub.append("b"); sub.append("c"); sub.append("d"); String dest = sub.toString(); /* * */ String s1 = "a"; s1 = s1+"c"; //其底层代码是以下内容 //StringBuilder sub = new StringBuilder("a") //sub.append("c") //sub.toString() /* * 字符串用+拼接会产生新对象,其实+底层就是使用StringBuilder * 完成的 */ s1 = s1+"b"+"c"+"d"+"e"; /* * 这行代码底层是: */ StringBuilder sub1 = new StringBuilder("a"); sub1.append("b"); sub1.append("c"); sub1.append("d"); sub1.append("e"); s1 = sub1.toString(); } }
StringBuilder拼接内存示意图
字符串的==比较
字符串字面量的保存
JAVAOOP调用其他功能
功能:调用另外一个功能
很多个功能,功能的内部都要
类{ 方法() { 代码实现 - 100 } } 类{ f() }
javaSe API:
java语言封装好的一系列的类,接口,抽象类
javaAPI:
java为我们提供好的一系列的类,接口,抽象类
文档注释导出api方式:
类:方法 String
javaApi文档网址:doc.tedu.cn
DocDemo.java
import java.text.ParseException;
/**
* 文档注释:功能级注释,用于三个地方
* 用于类,方法,常量的上方,说明各自的功能
*
* 此类用于解释文档注释
* @author Linda
* @version 1.8
* @since JDK1.5
* @see java.lang.String
*/
public class DocDemo {
/**
* AGE表示年龄
*/
public static final int AGE = 12;
/**
* 根据用户名查找用户信息
* @param name 用户名
* @return AGE 年龄
* @throws ParseException
*/
public int findUserByName(String name) throws ParseException{
//方法体
return AGE;
}
}
导出项目的API文档操作步骤:
1.在项目中的类中添加文档注释 2.选中当前项目,右键点击export 3.选择java-->javadoc-->next 4.如果弹出的窗口上方没有命令,配置(去jdk->bin->javadoc.exe)-->finish
效果:在当前工作空间的当前项目下生成doc文件夹,此文件夹下会生成很多东西,找index.html,双击打开即可。
作业:
面试题:
1.String str = "我爱java,我热爱java,我非常热爱java";
统计出str中子字符串java出现的次数。
2.用户输入网址,截取网址的域名并打印输出。
3.用户从控制台输入字符串,用charAt()判断一个字符串是否是回文。
回文:"上海自来水来自海上" - 回文
4.消化今天的内容 重点String内存
StringBuilder内存表示
5.main:
String str = "abc";
char[] chs = {'g','b','k'};
//调用方法
change(str,chs);
System.out.println(str) ?
System.out.println(chs[0]) ?
public void change(String str,char[] chs){
str = "hello";
chs[0] = 'a';
}