/**
- Created by s on 17/2/20.
*/
1. 對(duì)于所有的類來說,類名的首字母應(yīng)該大寫
2.創(chuàng)建第一個(gè)java對(duì)象
public class Puppy {
public Puppy(String name){
System.out.print("小狗的名字是 " + name);
/*加號(hào)+必須是英文狀態(tài)下的,不然會(huì)和中文狀態(tài)下的分號(hào)一樣會(huì)報(bào)錯(cuò)*/
}
public static void main(String []args){
//創(chuàng)建一個(gè)新的Puppy對(duì)象
Puppy myPuppy = new Puppy("tommy\n");
}
}
3.對(duì)小貓puppy的調(diào)查
public class Puppy{
int puppyAge;
public Puppy(String name){
System.out.println("小狗的名字是" + name);
}
public void setAge(int age){
puppyAge = age;
}
//getAge得到的值是一個(gè)整形變量,有返回值,所以需要用int
public /*void*/int getAge(){
System.out.println("小狗的年齡為 " + puppyAge);
return puppyAge;
}
public static void main(String []args){
Puppy myPuppy = new Puppy("tommy");
myPuppy.setAge(2);
myPuppy.getAge();
System.out.println("變量值 : " + myPuppy.puppyAge);
}
}
4.實(shí)現(xiàn)對(duì)this的引用
public class ReturnThis {
//定義一個(gè)局部變量age
int age;
ReturnThis grow(){
age++;
return this;
}
public static void main(String []args){
ReturnThis rt = new ReturnThis();
rt.grow()
.grow()
.grow();
System.out.println("rt的age成員變量值是 :" + rt.age);
}
}
編譯結(jié)果為: rt的age成員變量值是 : 3
由此可見對(duì)于this引用是可以作為返回值返回的,它的返回值是rt引用的grow個(gè)數(shù)
5.員工的收入情況
1、創(chuàng)建員工的一個(gè)類
import java.io.*;
public class Employee {
String name;
int age;
String designation;
double salary;
// Employee 類的構(gòu)造器
public Employee(String name){
this.name = name;
}
// 設(shè)置age的值
public void empAge(int empAge){
age = empAge;
}
/* 設(shè)置designation的值*/
public void empDesignation(String empDesig){
designation = empDesig;
}
/* 設(shè)置salary的值*/
public void empSalary(double empSalary){
salary = empSalary;
}
/* 打印信息 */
public void printEmployee(){
System.out.println("名字:"+ name );
System.out.println("年齡:" + age );
System.out.println("職位:" + designation );
System.out.println("薪水:" + salary);
}
}
2、引出一個(gè)實(shí)例
import java.io.*;
public class EmployeeTest {
public static void main(String args[]){
/* 使用構(gòu)造器創(chuàng)建兩個(gè)對(duì)象 */
Employee empOne = new Employee("RUNOOB1");
Employee empTwo = new Employee("RUNOOB2");
// 調(diào)用這兩個(gè)對(duì)象的成員方法
empOne.empAge(26);
empOne.empDesignation("高級(jí)程序員");
empOne.empSalary(1000);
empOne.printEmployee();
empTwo.empAge(21);
empTwo.empDesignation("菜鳥程序員");
empTwo.empSalary(500);
empTwo.printEmployee();
}
}
3、通過javac EmployeeTest.java —> java EmployeeTest
可以得到:
- 名字:RUNOOB1
- 年齡:26
- 職位:高級(jí)程序員
- 薪水:1000.0
- 名字:RUNOOB2
- 年齡:21
- 職位:菜鳥程序員
- 薪水:500.0
至此即實(shí)現(xiàn)了對(duì)兩個(gè)對(duì)象的調(diào)用
2017/2/21
1. 學(xué)習(xí)私有變量private
public class InstanceCounter {
//定義一個(gè)私有變量numInstance
private static int numInstances = 0;
//由于numInstance是私有變量,所以需要通過getCount來調(diào)用
protected static int getCount() {
return numInstances;
}
private static void addInstance() {
numInstances++;
}
InstanceCounter() {
InstanceCounter.addInstance();
}
public static void main(String[] arguments) {
System.out.println("Starting with " + InstanceCounter.getCount() + " instances");
for (int i = 0; i < 500; ++i){
new InstanceCounter();
}
System.out.println("Created " + InstanceCounter.getCount() + " instances");
}
}
輸出結(jié)果是:
Starting with 0 instances
Created 500 instances
2. for循環(huán)的應(yīng)用
public class Test {
public static void main(String args[]){
//定義一個(gè)數(shù)組,可以觀察到方括號(hào)寫的位置是可以隨意的,比如 [ ]args
int [] numbers = {10, 20, 30, 40, 50};
//這里引用了數(shù)組的增強(qiáng)型for循環(huán),即x的類型應(yīng)和數(shù)組里的數(shù)據(jù)類型一致,并且每次x等于該數(shù)組的一個(gè)元素
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
//這里也是利用了增強(qiáng)型for循環(huán)
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
//我覺得輸出結(jié)果不好看,就加了這句
System.out.print("\n");
}
}
輸出結(jié)果為:
10,20,30,40,50,
James,Larry,Tom,Lacy,
3. break的應(yīng)用
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
//增強(qiáng)型for循環(huán)
for(int x : numbers ) {
// x 等于 30 時(shí)跳出循環(huán)
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
}
輸出結(jié)果為:
10
20
4.所有的包裝類(Integer、Long、Byte、Double、Float、Short)都是抽象類 Number 的子類。
5. Java StringBuffer 和 StringBuilder 類
public class Test{
public static void main(String args[]){
StringBuffer sBuffer = new StringBuffer("菜鳥教程官網(wǎng):");
sBuffer.append("www");
sBuffer.append(".runoob");
sBuffer.append(".com");
System.out.println(sBuffer);
}
}
輸出結(jié)果為:
菜鳥教程官網(wǎng):www.runoob.com
6. 數(shù)組的應(yīng)用
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有數(shù)組元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 計(jì)算所有元素的總和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
輸出的結(jié)果是:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
7. *獲取當(dāng)前時(shí)期,在簡詩上可以用到
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
}
}
####這個(gè)獲取的信息比較多
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 對(duì)象
Date date = new Date();
// 使用toString()顯示日期和時(shí)間
System.out.printf("%1$s %2$tB %2$td, %2$tY",
"Due date:", date);
}
}
####這個(gè)獲取的只有日期
8. 用cat替換句子中所有的dog
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
private static String REGEX = "dog";
private static String INPUT = "The dog says meow. " +
"All dogs say meow.";
private static String REPLACE = "cat";
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
// get a matcher object
Matcher m = p.matcher(INPUT);
INPUT = m.replaceAll(REPLACE);
System.out.println(INPUT);
}
}
輸出結(jié)果為:
The cat says meow. All cats say meow.
2017/2/22
1.
public class Varargs {
//String...books類似于String [] books
public static void test(int a, String...books){
//增強(qiáng)型for循環(huán),類似于數(shù)組,將books里的元素一個(gè)個(gè)都打印出來
for (String tmp : books){
//tmp只是代表一個(gè)臨時(shí)變量
System.out.println(tmp);
}
System.out.println(a);
}
public static void main(String []args){
test(5, "瘋狂java講義", "輕量級(jí)java ee 企業(yè)應(yīng)用實(shí)戰(zhàn)");
}
}
輸出結(jié)果為:
瘋狂java講義
輕量級(jí)java ee 企業(yè)應(yīng)用實(shí)戰(zhàn)
5
2. 遞歸的運(yùn)用
####假設(shè)fn(0)=1;fn(1)=4;fn(n+2)=fn(n+1)+fn(n);求fn(10)
public class Test{
public static int fn(int n){
if(n == 0){
return 1;
}
else if(n == 1){
return 4;
}
else{
//遞歸調(diào)用它本身
return 2*fn(n-1)+fn(n-2);
}
}
public static void main(String []args){
System.out.println(fn(10));
}
}
輸出結(jié)果為:
10497
3. 為了避免不同公司之間類名的重復(fù);Oracle建議使用公司Internet域名倒寫來作為包名
2017/2/23
1.
public class VariableOverrideTest {
//設(shè)置兩個(gè)變量 name,price并隱藏起來
private String name = "李剛";
private static double price = 78.0;
public static void main(String[] args) {
int price = 65;
System.out.println(price);
System.out.println(VariableOverrideTest.price);
new VariableOverrideTest().info();
}
public void info() {
String name = "孫悟空";
System.out.println(name);
System.out.println(this.name);
}
}
輸出結(jié)果為:
65
78.0
孫悟空
李剛
2. 運(yùn)用 this 方法
//定義一個(gè)Person類
public class Test{
//設(shè)置兩個(gè)私有變量,只能用setter,getter來調(diào)用
private String name = "李白";
private int age = 18;
public void setName(String name){
if(name.length() < 2 || name.length() >7){
return ;
}
else{
this.name = name;
}
}
public /*void*/String getName(){
return this.name;
}
public void setAge(int age){
if(age >100 || age <0){
return;
}
else{
this.age = age;
}
}
public /*void*/int getAge(){
return this.age;
}
}
主函數(shù)為
public class TestReturn {
public static void main(String []args){
Test t = new Test();
t.setAge(1000);
System.out.println("未能設(shè)置age成員變量時(shí) " + t.getAge());
t.setAge(30);
System.out.println("成功設(shè)置age成員變量時(shí) " + t.getAge());
t.setName("李白");
System.out.println("成功設(shè)置name成員變量時(shí) " + t.getName());
}
}
輸出的結(jié)果是:
未能設(shè)置age成員變量時(shí) 18
成功設(shè)置age成員變量時(shí) 30
成功設(shè)置name成員變量時(shí) 李白
2017/2/26
1.在包中創(chuàng)建一個(gè)單鏈表,包名為linkedlist;
實(shí)現(xiàn)單鏈表的插入,刪除,與遍歷輸出的功能
#### LinkedListTest.java
public class LinkedListTest{
public static void main(String [] args) {
//創(chuàng)建一個(gè)引用變量 linkedlist
LinkedList linkedList = new LinkedList();
//實(shí)現(xiàn)單鏈表中各個(gè)結(jié)點(diǎn)的值的插入
linkedList.add(10);
linkedList.add(20);
linkedList.add(30);
linkedList.add(40);
linkedList.add(50);
//實(shí)現(xiàn)對(duì)指定位置的結(jié)點(diǎn)的插入
linkedList.add(0,60);
//遍歷輸出改鏈表的所有結(jié)點(diǎn)的值
linkedList.print();
System.out.print("index=0: " + linkedList.get(0) + ", index=1: " + linkedList.get(1) + ", index=2: " + linkedList.get(2) + "\n");
//刪除第五個(gè)結(jié)點(diǎn)
linkedList.remove(4);
System.out.print("index=0: " + linkedList.get(0) + ", index=1: " + linkedList.get(1) + ", index=2: " + linkedList.get(2) + ", index=3: " + linkedList.get(3) + ", index=4: " + linkedList.get(4) +"\n" );
}
}
#### LinkedList.java
#### 定義所需要用到的類
package linkedlist;
public class LinkedList{
//定義它的頭結(jié)點(diǎn)
private Node head;
//增加一個(gè)新的結(jié)點(diǎn)
public void add(int value) {
Node node = new Node(value);
if (head == null) {
head = node;
}
else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = node;
}
}
//在指定下標(biāo)的后面增加一個(gè)結(jié)點(diǎn)
public void add(int index,int value){
if(index == 0 ){
Node newNode = new Node(value);
newNode.next = head;
head = newNode;
}
else{
Node current = head;
while(index > 0){
index--;
current = current.next;
}
Node newNode = new Node(value);
newNode.next = current.next;
current.next=newNode;
}
}
//獲得給定下標(biāo)的結(jié)點(diǎn)的值
public int get(int index) {
// index 在合理范圍內(nèi)
if (index == 0) {
if (head == null) {
return -100000;
}
return head.value;
} else {
Node current = head;
while (index > 0) {
index--;
current = current.next;
}
return current.value;
}
}
public int remove(int index) {
//index 在合理范圍內(nèi)
if(index == 0){
head = head.next;
return head.value;
}
else{
Node current = head;
//找到需要?jiǎng)h除的結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)
while(index > 1){
index--;
current = current.next;
}
//刪除該結(jié)點(diǎn)的操作,,即躍過要?jiǎng)h除的結(jié)點(diǎn),直接指向它的下一個(gè)結(jié)點(diǎn),再size--,即刪除該結(jié)點(diǎn)了
current.setNext(current.next.next);
return current.value;
}
}
public void print(){
Node current = head;
while(current != null){
System.out.println("鏈表的值為:" + current.value);
current = current.next;
}
}
}
#### Node.java
#### 定義結(jié)點(diǎn)的類
package linkedlist;
public class Node {
public int value;
public Node next;
public int size;
public Node(int value){
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node getNext() {
return this.next;
}
public void setNext(Node next) {
this.next = next;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
2017/3/3
自學(xué)MYSQL數(shù)據(jù)庫
- 通過使用JDBC,JAVA程序可以非常方便的操作各種主流數(shù)據(jù)庫
- JDBC = Java Database connectivity 即Java數(shù)據(jù)庫連接,一種可以執(zhí)行SQL語句的Java API
- 具有跨平臺(tái)(即讓相同的程序在不同的平臺(tái)上運(yùn)行)和跨數(shù)據(jù)庫(三大數(shù)據(jù)庫,MYSQL,Oracle,DB2)等特性
- 開發(fā)人員面對(duì)JDBC API編寫應(yīng)用程序,然后根據(jù)不同的數(shù)據(jù)庫,使用不同的數(shù)據(jù)庫驅(qū)動(dòng)即可
- JDBC驅(qū)動(dòng):純JAVA的,直接與數(shù)據(jù)庫實(shí)例交互,這種驅(qū)動(dòng)是智能的,它知道數(shù)據(jù)庫使用的底層協(xié)議。這種驅(qū)動(dòng)是目前最流行的JDBC驅(qū)動(dòng)
- JDBC比ODBC更簡單,更安全。
- 每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無二的參數(shù)類型列表。
2017/3/7
Overloading
/**
* Created by s on 17/3/7.
*/
//每個(gè)重載(Overloading)的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無二的參數(shù)類型列表。
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
//以下兩個(gè)參數(shù)類型順序不同
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}
public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}
public static void main(String[] args){
Overloading o = new Overloading();
System.out.println(o.test());
//返回 test1 1
o.test(1);
//調(diào)用test(int a)這個(gè)函數(shù),返回 test2
System.out.println(o.test(1,"test3"));
//調(diào)用test(String s,int a)這個(gè)函數(shù),返回 test3 returntest3
System.out.println(o.test("test4",1));
//調(diào)用test(String s,int a)這個(gè)函數(shù),返回 test4 returntest4
}
}