No, and you can try yourself:

```
julia> f(x::Type{T}) where T = "got a type"
f (generic function with 1 method)
julia> f(x::T) where T = "got an instance of a type"
f (generic function with 2 methods)
julia> f(2)
"got an instance of a type"
julia> f(Int)
"got a type"
```

The first method matches arguments that are themselves type, like `Int`

, `String`

, `Array`

etcâ€¦

The second method match values, or instances (of some type), like `1`

, `"hello"`

, `[1,2,3]`

.

Note that the type values `Int`

, `String`

, `Array`

are themselves instances of another type: a `DataType`

, such that the following works:

```
julia> f2(x::DataType) = "got a type here too!"
f2 (generic function with 1 method)
julia> f2(Int)
"got a type here too!"
```