编码GBK不可映射字符(错误提示)
解决方法:需要在每个build.gradle中加入一串固定的代码
固定代码
print与println的区别
print不换行;println自动换行
以println输出
public class Myclass {
public static void main(String[] args) {
int a = 10;
float b = 20;
System.out.println("a ="+a);
System.out.println("b ="+b);
}
}
输出结果:
a=10
b=20.0
以print输出
public class Myclass {
public static void main(String[] args) {
int a = 10;
float b = 20;
System.out.print("a ="+a);
System.out.print("b ="+b);
}
}
输出结果:
a=10b=20.0
java的数组
1. 数组的定义Array ( int num[] = new int[30]),数组一旦创建,内存空间确定无法变化
创建静态数组
String name = new String[]{"jack","merry"};
常用定义方法
String[] titles = new String[]{"新闻","体育"};
2.数组的访问(num[0] = 20)
public class Myclass {
public static void main(String[] args) {
//创建动态数组
int num[] = new int[30];
//获取数组的个数
System.out.println("数组个数"+num.length);
}
}
输出结果:
数组个数30
3.数组的遍历
方法一:关心第几个
for(int i = 0;i < titles.length;i++){
System.out.println(titles[i]);
}
方法二:仅仅打印出来每个
for(String temp :titles){
System.out.println(temp);
}
方法的定义
·类里边有什么:属性、方法、类→内部类、接口、静态代码块(java是面向对象的语言,一切皆对象)
· java里的方法都不可独立存在,只能在类里申明
类方法=静态方法
对象方法=实例方法
对象方法与类方法的区别
1.定义的区别:类方法 使用static修饰
2.意义的区别:类方法依附于类本身,优先于对象方法被加载,当这个类加载到内存中时这个方法即被加载,而此时对象还不存在,所以只能用类来调用调用这个类方法;对象方法依附于对象,必须创建这个类的一个对象,用对象来调用
3.static可以修饰以下
变量 静态变量
方法 静态方法
类(内部类)静态内部类
定义
public class Person {
//定义一个没有参数实例的方法
//public protect private
public void eat(){
//修饰符+返回值+方法名+参数
}
public void work(String tool,String dest){
}
public String test(){
return"result";
}
//定义一个对象方法
public static void test2(){
}
}
访问
public class Myclass {
public static void main(String[] args) {
Person p = new Person();
p.eat();
p.work("榔头","工地");
String result = p.test();
//类方法的调用
Person.test2();
}
}
java参数传递机制
值传递,传递过去的是当前一份变量的拷贝,内部改变不影响值
Myclass.java
public class Myclass {
public static void main(String[] args) {
{
int a = 10;
Person q = new Person();
q.test3(a);
System.out.println("a=" + a);
}
}
}
Person.java
public class Person {
//定义一个没有参数实例的方法
//public protect private
public void test3(int a){
//修饰符+返回值+方法名+参数
a++;
}
输出结果:
a=10
对象传递,传递的是地址,所以内部改变时。值发生改变
public class Myclass {
public static void main(String[] args) {
{
Car bz = new Car();
bz.wheelCount = 8;
Person p = new Person();
p.test4(bz);
System.out.println("wheel count is " + bz.wheelCount);
}
}
}
package com.example.lib.day2;
/**
* @Description
* @Author 空添
*/
public class Car {
public int wheelCount;
}
输出结果:
wheel count is 4
可变参数
Person.java
public class Person {
//传递一个可变参数,参数个数不确定
//使用数组来接收
//String ... args等价于String[] args
public void test5(String ... args){
for(int i = 0;i < args.length;i++){
System.out.println(args[i]);
}
}
}
Myclass.java
package com.example.lib.day2;
/**
* @Description
* @Author 空添
*/
public class Myclass {
public static void main(String[] args) {
{
Person p = new Person();
p.test5("jack","rose","merry");
}
}
}
输出结果:
jack
rose
merry
方法的重载
同一个类里,方法名相同,参数不同;方法的重载和返回值,修饰符没有关系;方法名与类名相同,没有返回值
构造方法如何去创建一个对象;系统默认提供一个无参的构造方法
构造方法可以解决两个问题:代码更简洁
Car.java
public class Car {
public int wheelCount;
public int engine;
public int seat;
public Car(){
}
public Car(int count,int cEngine,int cSeat){
wheelCount = count;
engine = cEngine;
seat = cSeat;
}
}
Myclass.java
package com.example.lib.day2;
public class Myclass {
public static void main(String[] args) {
{
Car c1 = new Car();
c1.wheelCount = 4;
Car c2 = new Car(4,2,7);
}
}
private的访问方法
setter/getter方法:间接访问private
Myclass.java
public class Myclass {
public static void main(String[] args) {
Person p = new Person();
//直接访问
p.money = 200;
//间接访问
p.setName("jack");
System.out.println("My name is "+p.getName());
}
}
Person.java
package com.example.lib.day3;
/**
* @Description
* @Author 空添
*/
public class Person {
private String name;
public int money;
//set方法
public void setName(String name){
this.name = name;
}
//get方法
public String getName(){
return name;
}
}
输出结果:
My name is jack
getter和setter方法快速调出:alt+enter
(这个方法位于代码末端)
toString方法
没有手动实现toString方法
Myclass.java
package com.example.lib.day3;
public class Myclass {
public static void main(String[] args) {
Person p = new Person();
System.out.println(p);
}
}
Person.java
package com.example.lib.day3;
public class Person {
private String name;
public int money;
}
输出结果:
com.example.lib.day3.Person@42a57993
当print输出一个对象时,就会去这个对象内部查找toString方法
如果没有实现,那么会从父类Object里去查找toString的实现
Object里面默认使用 类名+@+hasCode
重写toString方法是为了在调试时快速获取这个对象信息
手动输入实现toString
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", money=" + money +
'}';
输出结果:
Person{name='null', money=0}